Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formel per VBA auslesen, ändern, zurückschreiben?

Formel per VBA auslesen, ändern, zurückschreiben?
Kasimir
Hallo an alle!
ich komme einfach nicht weiter. Mit folgendem Makro möchte ich eine Formel auslesen, ändern und wieder in die Zelle zurückschreiben.
Sub Formel_aendern()
Dim strBereichMedia()   As String
strBereichMedia = Split(Cells(Selection.Row, Selection.Column).FormulaLocal, "/")
If UBound(strBereichMedia()) >= 1 Then
Cells(Selection.Row, Selection.Column).Formula = strBereichMedia(0) & " / " & CInt( _
strBereichMedia(1)) - 1
End If
End Sub

In der Zelle, die ausgelesen wird und dessen Formel geändert werden soll, steht die Formel „=(ZÄHLENWENN(C14:C19;""))/8“. In der Formel soll die Zahl, durch die geteilt werden soll, hier die Zahl 8, geändert werden.
Mit meinem Makro erhalte ich aber einen Laufzeitfehler 1004, Anwendungs- und objektdefinierter Fehler und die Zeile
„Cells(Selection.Row, Selection.Column).Formula = strBereichMedia(0) & " / " & CInt(strBereichMedia(1)) - 1“
wird gelb markiert.
Kann mir jemand sagen warum?
Danke Euch für die Hilfe,
Kasimir
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel per VBA auslesen, ändern, zurückschreiben?
09.05.2011 19:42:00
Gerd
Hallo Kasimir!
Sub Formel_aendern()
Dim strBereichMedia()   As String
strBereichMedia = Split(ActiveCell.FormulaLocal, "/")
If UBound(strBereichMedia()) = 1 Then
If IsNumeric(strBereichMedia(1)) Then
ActiveCell.FormulaLocal = strBereichMedia(0) & " / " & CInt( _
strBereichMedia(1)) - 1
End If
End If
End Sub
Gruß Gerd
Anzeige
AW: Formel per VBA auslesen, ändern, zurückschreiben?
09.05.2011 21:00:07
Kasimir
Hallo Gerd,
danke Dir, es funktioniert.
Schönen Abend noch,
Kasimir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formel per VBA auslesen, ändern und zurückschreiben


Schritt-für-Schritt-Anleitung

Um eine Formel in Excel per VBA auszulesen und anschließend zu ändern, kannst du das folgende Makro verwenden. Es wird die Formel einer Zelle auslesen, den Teil nach dem "/" ändern und die neue Formel zurückschreiben.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deine Arbeitsmappe)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Formel_aendern()
       Dim strBereichMedia() As String
       strBereichMedia = Split(ActiveCell.FormulaLocal, "/")
       If UBound(strBereichMedia()) = 1 Then
           If IsNumeric(strBereichMedia(1)) Then
               ActiveCell.FormulaLocal = strBereichMedia(0) & " / " & CInt(strBereichMedia(1)) - 1
           End If
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Wähle die Zelle aus, deren Formel du ändern möchtest.

  6. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle Formel_aendern und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler kann auftreten, wenn die Zelle, aus der die Formel ausgelesen werden soll, nicht korrekt ausgewählt ist. Stelle sicher, dass die Zelle aktiv ist, bevor du das Makro ausführst.

  • Formel wird nicht aktualisiert: Überprüfe, ob das Format der Zelle korrekt ist und ob die Formel tatsächlich ein "/" enthält. Wenn die Struktur nicht wie erwartet ist, wird die Änderung nicht ausgeführt.


Alternative Methoden

Eine alternative Methode, um eine Excel-Formel auszulesen, ist die Verwendung von Excel-Funktionen selbst, anstatt VBA. Du kannst die Funktion TEXT oder WENN verwenden, um das Ergebnis der Formel dynamisch zu ändern, ohne VBA zu nutzen.

Beispiel:

=WENN(ZÄHLENWENN(C14:C19;"")/8<1;0;ZÄHLENWENN(C14:C19;"")/8)

Hier kannst du die Zahl 8 direkt in der Formel ändern, ohne auf VBA zurückzugreifen.


Praktische Beispiele

Angenommen, du hast in Zelle A1 die Formel =(ZÄHLENWENN(C14:C19;""))/8 und möchtest die Division durch 8 um 1 verringern. Mit dem obigen Makro wird die Formel zu =(ZÄHLENWENN(C14:C19;""))/7.

Ein weiteres Beispiel könnte sein:

  • Ursprüngliche Formel: =(SUMME(A1:A10))/10
  • Nach Verwendung des Makros: =(SUMME(A1:A10))/9

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Teste deine Makros in einer Kopie deiner Arbeitsmappe, um unbeabsichtigte Änderungen zu vermeiden.
  • Dokumentiere deine VBA-Codes mit Kommentaren, damit du später leichter nachvollziehen kannst, was jeder Teil des Codes bewirken soll.

FAQ: Häufige Fragen

1. Wie kann ich die Formel aus einer anderen Zelle anstelle der aktiven Zelle auslesen? Du kannst Cells(1, 1).FormulaLocal verwenden, um die Formel aus einer spezifischen Zelle auszulesen, anstelle von ActiveCell.

2. Was kann ich tun, wenn meine Formel komplex ist? Wenn deine Formel mehrere Operatoren oder Funktionen enthält, musst du den Code anpassen, um sicherzustellen, dass die richtige Komponente geändert wird. Du kannst InStr verwenden, um nach spezifischen Zeichen oder Texten in der Formel zu suchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige