Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Formel aktualisieren (bei Globaler Variable)

Forumthread: VBA Formel aktualisieren (bei Globaler Variable)

VBA Formel aktualisieren (bei Globaler Variable)
20.02.2004 12:35:23
Benjamin Keck
Hallo Allerseits,
für Euch ist es wahrscheinlich ein Leichtes.
Ich hab das Problem schon reduziert auf folgende Aufgabe.
Ich habe drei Funktionen in VBA
'Variablen
Global A,B as integer

Private Function SetA(myA as integer)
A=myA
SetA = "A gesetzt"
End Function


Private Function SetB(myB as integer)
B=myB
SetB = "B gesetzt"
End Function


Private Function SummeAB() as integer
SummeAB=A+B
End Function

So, wenn man nun setze ich A in einer Zelle mit =SetA(3) auf 3 setzt und B
in einer anderen Zelle mit =SetB(2) auf 2.
In meiner Ergebnis Zelle ruf ich =SummeAB() auf und erhalte 5
Ändere ich nun aber =SetB(2) in =SetB(3) ab, bleibt das Ergebnis von =SummeAB()
gleich. Wenn ich die Zelle mit F2 editiere und dann einfach Enter drück, dann steht das richtige Ergebnis drin.
Warum wird das Ergebnis der Function nicht automatisch aktualisiert und wie kann
ich das ergebnis automatisch aktualisieren lassen.
Herzlichen Dank
Mit freundlichem Gruß
Benjamin Keck
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Formel aktualisieren (bei Globaler Variable)
20.02.2004 12:42:26
Alex K.
Hallo Benjamin,
das Problem ist, dass Excel keinen Bezug zwischen den Zellen mit deinen eigenen Funktionen herstellen kann. Da zwischen den Zelle keine Abhängigkeiten bestehen, so sieht Excel keine Notwendigkeit, das Blatt neu zu berechen.
Du kannst eine Berechnung manuell über
ActiveSheet.Calculate
auslösen.
Also

Private Function SetB(myB as integer)
B=myB
SetB = "B gesetzt"
ActiveSheet.Calculate
End Function

Anzeige
AW: VBA Formel aktualisieren (bei Globaler Variable)
20.02.2004 12:51:31
Benjamin Keck
ActiveSheet.Calculate Funktion hab ich schon in der Hilfe gefunden. Auch die F9 Taste.
Allerdings gehts auch so nicht!
'Variablen
Global A, B As Integer

Private Function SetA(myA As Integer)
A = myA
SetA = "A gesetzt"
ActiveSheet.Calculate
End Function


Private Function SetB(myB As Integer)
B = myB
SetB = "B gesetzt"
ActiveSheet.Calculate
End Function


Private Function SummeAB() As Integer
SummeAB = A + B
End Function

Anzeige
AW: VBA Formel aktualisieren (bei Globaler Variable)
20.02.2004 13:06:36
Alex K.
Hallo Benjamin,
da hilt nur die Holzhammermethode. Also direkt aus den Set-Funktionen am Schluss "SummeAB()" aufrufen!
Besser wäre es, du änderst den Wert nicht direkt in der Formel, sondern nimmst Bezug auf eine Zelle:
=SetA(A1)
=SetB(A2)
Nun müßte bei Änderung der Zellen A1 bzw. A2 die Formel berechnet werden.
Falls das auch nicht klappt, dann berechnet Excel nur Zellen, welchen Parameter haben, die sich ändern können. Da "SummeAB" keinen Parameter hat, der sich geändert hat, wird diese dann auch nicht neu berechnet. Weiss aber nicht genaue, ob ich mit meiner Vermutung richtig liege. Teste einfach mal, der SummeAB eine Wert aus einer Zelle zu übergeben.
=SummeAB(A1)
Musst natürlich dann deine Funktion SummeAB anpassen.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Formeln aktualisieren: Tipps und Tricks


Schritt-für-Schritt-Anleitung

  1. Globale Variablen definieren: Definiere deine globalen Variablen zu Beginn des Moduls.

    Global A, B As Integer
  2. Funktionen erstellen: Erstelle die Set-Funktionen, um die Werte für A und B festzulegen.

    Private Function SetA(myA As Integer)
       A = myA
       SetA = "A gesetzt"
       ActiveSheet.Calculate ' Manuelle Berechnung anstoßen
    End Function
    
    Private Function SetB(myB As Integer)
       B = myB
       SetB = "B gesetzt"
       ActiveSheet.Calculate ' Manuelle Berechnung anstoßen
    End Function
  3. Summenfunktion erstellen: Erstelle eine Funktion, die die Summe von A und B berechnet.

    Private Function SummeAB() As Integer
       SummeAB = A + B
    End Function
  4. Zellen mit Formeln belegen: Setze die Zellen mit den entsprechenden Formeln.

    • In Zelle C1: =SetA(3)
    • In Zelle C2: =SetB(2)
    • In Zelle C3: =SummeAB()
  5. Änderungen testen: Ändere die Werte in den Zellen und beobachte, dass das Ergebnis nicht automatisch aktualisiert wird.


Häufige Fehler und Lösungen

  • Formeln aktualisieren sich nicht automatisch: Dies liegt daran, dass Excel keine Abhängigkeit zwischen den Zellen mit den benutzerdefinierten Funktionen erkennt.

    • Lösung: Füge ActiveSheet.Calculate in den Set-Funktionen ein, um die Berechnung manuell auszulösen.
  • Änderungen in den Zellen führen nicht zur Aktualisierung: Wenn du die Werte in A und B direkt in der Formel änderst, erkennt Excel dies nicht.

    • Lösung: Besser wäre es, die Werte in bestimmten Zellen zu referenzieren (z. B. =SetA(A1) und =SetB(A2)).

Alternative Methoden

  • Direkte Berechnung aufrufen: Anstatt auf die Abhängigkeit zwischen den Zellen zu vertrauen, kannst du die Berechnung direkt nach der Wertzuweisung in deinen Funktionen anstoßen.

  • Excel-VBA Zelle aktualisieren: Du kannst auch das Ereignis Worksheet.Change verwenden, um bei jeder Änderung in den Zellen eine Berechnung auszulösen.


Praktische Beispiele

  1. Verwendung von Zellen zur Eingabe:

    • Setze in Zelle A1 den Wert für A und in A2 den Wert für B. Verwende dann die Formeln:
      =SetA(A1)
      =SetB(A2)
      =SummeAB()
  2. Automatisierte Berechnung: Wenn du =SummeAB() anpasst, um einen Wert aus einer Zelle zu beziehen, stelle sicher, dass diese Zelle ebenfalls aktualisiert wird:

    Private Function SummeAB(myValue As Integer) As Integer
       SummeAB = A + B + myValue
    End Function

Tipps für Profis

  • Nutze Application.Volatile, um sicherzustellen, dass deine Funktionen bei jeder Berechnung aktualisiert werden.
  • Überlege, ob du deine Logik in eine Klasse kapseln möchtest, um die Variablen und Funktionen besser zu organisieren.
  • Halte deine VBA-Formeln einfach und klar strukturiert, um Fehler zu vermeiden und die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Warum werden meine Excel VBA Formeln nicht automatisch aktualisiert?
Excel erkennt keine Abhängigkeiten zwischen den Zellen mit benutzerdefinierten Funktionen, daher wird eine manuelle Berechnung benötigt.

2. Wie kann ich eine Excel Zelle automatisch aktualisieren?
Füge in deinen Set-Funktionen ActiveSheet.Calculate hinzu, um die Berechnung automatisch auszulösen, wenn ein Wert gesetzt wird.

3. Was kann ich tun, wenn meine Excel Zellen nicht aktualisiert werden?
Vergewissere dich, dass deine Funktionen Abhängigkeiten zu den Zellen haben, die aktualisiert werden sollen, oder verwende ActiveSheet.Calculate, um die Berechnung manuell auszulösen.

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