Excel VBA: Eigene Funktion - Werte aktualisieren

Salute Profis,

ich habe ein Blatt mehrsprachig gemacht, indem ich die diversen Begriffe in einem (verborgenen) Blatt spaltenweise je Sprache aufgelistet habe, und mittels eigener Funktion über Index-Nummern (=EigenerText(23)) in der Mappe verwende.

Funktioniert soweit alles prima. Manchmal aber wenn ich Zeilen lösche oder einfüge — das genaue Schema konnte ich noch nicht heruausfinden — verschwinden die Texte (bzw. Funktionswerte) und es steht nur noch „#WERT!“ da, und das sogar auf Blättern, die gar nicht bearbeitet wurden. Wie kann ich das verhindern? Wie kann ich dafür sorgen, daß nicht die ganze Mappe (dauert ewig), sondern nur diese Funktionswerte aktualisiert, oder besser: angewendet werden?

Vielen Dank und sommerliche Grüße vom
-Rob.

Grüezi Rob

Manchmal aber wenn ich Zeilen
lösche oder einfüge — das genaue Schema konnte ich noch nicht
heruausfinden — verschwinden die Texte (bzw. Funktionswerte)
und es steht nur noch „#WERT!“ da, und das sogar auf Blättern,
die gar nicht bearbeitet wurden. Wie kann ich das verhindern?
Wie kann ich dafür sorgen, daß nicht die ganze Mappe (dauert
ewig), sondern nur diese Funktionswerte aktualisiert, oder
besser: angewendet werden?

Wenn das hier =EigenerText(23) dein ganzer Funktiosaufruf ist, dann ist mir das Ganze eigentlich recht klar auch ohne dass ich den VBA-Code sehe.

Du rufst im Code drin offensichtlich andere Bereiche deiner Mappe (das versteckte Blatt eben) auf. Diese Aufrufe sind unreferenziert und werden daher nicht sauber aktualisiert oder liefern einen Fehler.

Beim Verändern von Werten und Inhalten deines versteckten Blattes wird momentan auch deine Funktion nicht aktualisert - dazu müsstest Du erst die Mappe komplett neu berechnen.

Übergib einer Funktion immer alle Bereiche und Bezüge als Parameter, dann passiert dies nicht.

Irgendwie so also: =EigenerText(23;DeinQuellbereich)

…aber ohne den Code zu sehen, kann ich da nichts weiter zu sagen…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Servus Thomas,

verflixt bist Du schnell :smile: Ich leider auch, ich habe nämlich (nach durcharbeiteter Nach) den Excel-Rechner schon runtergefahren.

Wenn das hier =EigenerText(23) dein ganzer Funktiosaufruf ist,
dann ist mir das Ganze eigentlich recht klar auch ohne dass
ich den VBA-Code sehe.

Du rufst im Code drin offensichtlich andere Bereiche deiner
Mappe (das versteckte Blatt eben) auf. Diese Aufrufe sind
unreferenziert und werden daher nicht sauber aktualisiert oder
liefern einen Fehler.

Beim Verändern von Werten und Inhalten deines versteckten
Blattes wird momentan auch deine Funktion nicht aktualisert -
dazu müsstest Du erst die Mappe komplett neu berechnen.

Nein, denn das versteckte Blatt wird nicht geändert (solange ich an der Mappe noch arbeite, ist es auch noch gar nicht versteckt). Inwiefern sind diese Aufrufe „unreferenziert“? Die Funktion sucht mit dem aktuell hinterlegten Sprachkürzel („de“, „en“ etc.) nach der so überschriebenen Spalte und geht dann in die Zeile der Nummer, die mit der Funktion übergeben wurde (=EigenerText(18) sucht also nach dem Inhalt in Zeile 18 der mit „de“ überschriebenen Spalte).

Übergib einer Funktion immer alle Bereiche und Bezüge als
Parameter, dann passiert dies nicht.

Irgendwie so also: =EigenerText(23;DeinQuellbereich)

Ist das wirklich nötig? Dann ist das mit den eigenen Funktionen aber überhaupt nicht mehr sexy :frowning:

…aber ohne den Code zu sehen, kann ich da nichts weiter zu
sagen…

Reiche ich in Kürze nach. Danke schon mal ganz dolle für Deine Hilfe.

Viele (müde) Grüße vom ;o)
-Rob.

Grüezi Rob

verflixt bist Du schnell :smile: Ich leider auch, ich habe nämlich
(nach durcharbeiteter Nach) den Excel-Rechner schon
runtergefahren.

Na, das war halt heute früh noch bevor ich ins Ausland gefahren bin… :wink:

Du rufst im Code drin offensichtlich andere Bereiche deiner
Mappe (das versteckte Blatt eben) auf. Diese Aufrufe sind
unreferenziert und werden daher nicht sauber aktualisiert oder
liefern einen Fehler.

Inwiefern sind diese Aufrufe „unreferenziert“? Die
Funktion sucht mit dem aktuell hinterlegten Sprachkürzel
(„de“, „en“ etc.) nach der so überschriebenen Spalte und geht
dann in die Zeile der Nummer, die mit der Funktion übergeben
wurde (=EigenerText(18) sucht also nach dem Inhalt in Zeile 18
der mit „de“ überschriebenen Spalte).

Der Bezug zum Quellbereich aus dem die Daten ausgelesen werden (und vielleicht auch noch andere Daten) werden erst im Code der Function erstellt und nicht als Parameter übergeben.
Damit fehlt Excel ein wichtiges Element im Berechnungs-Baum und die Funktion fällt schon mal durch die Maschen.

Übergib einer Funktion immer alle Bereiche und Bezüge als
Parameter, dann passiert dies nicht.

Irgendwie so also: =EigenerText(23;DeinQuellbereich)

Ist das wirklich nötig? Dann ist das mit den eigenen
Funktionen aber überhaupt nicht mehr sexy :frowning:

Ganz im Gegenteil - gerade das macht die Funktionen zu äusserst mächtigen und flexiblen Werkzeugen :smile:

…aber ohne den Code zu sehen, kann ich da nichts weiter zu
sagen…

Reiche ich in Kürze nach. Danke schon mal ganz dolle für Deine
Hilfe.

Aber gerne doch - Du gehst ja auf Vorschläge und Hinweise auch prompt ein.

Viele (müde) Grüße vom ;o)

Das nun nach meiner Rückkehr aus dem Ausland auch von mir :-b

Thomas Ramel

  • MVP für MS-Excel -
1 Like