Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba-Formel wird nicht automatisch aktual

vba-Formel wird nicht automatisch aktual
23.05.2023 15:48:52
Thomas

Moin,

Ich habe als Beispiel in Zelle C3 und C4 Werte.
In Zelle C5 rufe ich eine VBA-Function auf (mit =RechneDasMal) und im code beziehe ich mich auf die Zellen C3 und C4 mittels Activecell.offset um diese Werte zu verarbeiten.
Nun wird aber bei Änderung in C3 und C4 der Code in C5 nicht automatisch aufgerufen. Muss in die Zelle gehen, editieren, enter. Dann iss gut.
Ein Application.Calculate im Worksheet_Change-Ereignis des entsprechenden Worksheets hilft seltsamerweise auch nicht.

Geht das nur, wenn ich die Funktion mit Range-Argument aufrufe? Also =RechneDasMal(C3;C4)?
Oder geht das auch so wie ich es versucht hab?

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Glaskugel, wo bist du ?
23.05.2023 15:54:58
Pappawinni
Ich schau gleich mal, ob ich ne Glaskugel finde, die mir sagt, wie deine Funktion deklariert ist....


AW: Glaskugel, wo bist du ?
23.05.2023 17:33:13
Thomas
In einem Modul, als public function


AW: vba-Formel wird nicht automatisch aktual
23.05.2023 16:02:44
Pappawinni
..oder hast du vielleicht auf manuelle Berechnung gestellt.


AW: vba-Formel wird nicht automatisch aktual
23.05.2023 17:33:52
Thomas
Nein, das hatte ich vor posten überprüft


AW: vba-Formel wird nicht automatisch aktual
23.05.2023 17:34:38
Thomas
1. Nein
2. weiß ich nicht.


Anzeige
AW: vba-Formel wird nicht automatisch aktual
23.05.2023 16:21:48
Daniel
Hi
um Excel nicht mit unnötiger Arbeit zu beaufschlagen, berechnet Excel Formeln nur neu, wenn sich eine Zelle, die in den Übergabeparametern angegeben ist, ändert.
Was jetzt innerhalb deines Makros passiert, weiß Excel nicht, es kennt nur die Zellen der Übergabeparameter und überwacht diese auf Änderungen.

wenn du die für das Berechnngsergebnis relevanten Zellen nicht angeben willst, dann gibt es noch die Möglichkeit, irgendwo im Code die Anweisung Application.Volatile unterzubringen. Das hat dann zur Folge, dass deine Formel immer neu berechnet wird wenn sich der Wert irgendeiner Zelle ändert.
Wenn deine Formel nur kurz rechnet, dann ist das ok, wenn sie jedoch lang braucht und vielleicht noch in großer Anzahl vorkommt, dann können so schon schnell spürbare Verzögerungen beim Arbeiten mit Excel entsehen, weil diese Formeln auch beim Filtern und Sortieren neu berechnet werden.

Gruß Daniel


Anzeige
AW: vba-Formel wird nicht automatisch aktual
23.05.2023 16:35:32
Pappawinni
Da gibt es auch den Trick, da irgendwie ne Zufallszahl rein zu mogeln, weil die ja naturgemäß volatil ist..... aber sowas vermeidet man doch tunlichst


AW: vba-Formel wird nicht automatisch aktual
23.05.2023 17:37:14
Thomas
Danke, ich dachte, das Application.calculate im worksheet_Change Ereignis würde das tun. Ist aber offenbar nicht so.
Ich hab nun umgestellt auf übergebene Zellen. Nun klappt das.


AW: vba-Formel wird nicht automatisch aktual
23.05.2023 16:39:37
Daniel
Hi
Application.Calculate berechnet auch nur die Zellen neu, für die Excel die Notwendigkeit dazu erkannt hat.
Alternativ zum von mir geschon gezeigten Application.Volatile im Code der Funktion kannst du die Neuberechnung auch mit
Application.CalculateFull
für alle Formeln erzwingen.

die dritte Möglichkeit wäre, anstatt die Funktion volatil zu machen, die Formel zu volatilisieren, in dem du eine volatilte Funktion dazu stelllst
Volatil sind alle Zufallsfunktionen, die Zeitfunktionen Heute(), Jetzt() sowie Indirekt und Bereich.Verschieben:

=Wenn(Zufallsbereich(1;1);RechneDasMal)
also insgesamt hast du folgende Möglichkeiten:
Function RechneDasMal(Zelle1, Zelle2)
=RechneDasMal(C3;C4)
oder
Function RechneDasMal()
Application.Volatile
=RechneDasMal()
oder
Private Sub Worksheet_Change(...)
Application.CalculateFull
=RechneDasMal()
oder
Wenn(Zufallsbereich(1;1);RechneDasMal())
Gruß Daniel


Anzeige
AW: vba-Formel wird nicht automatisch aktual
23.05.2023 17:39:20
Thomas
Das mit CalculateFull hatte ich auch versucht. Hat aber auch nicht geklappt.
Danke für Deine Tipps!

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige