Office - Word, Excel und Co. 9.753 Themen, 41.605 Beiträge

Excel: Neuberechnung Tabellenblatt

jdeen / 7 Antworten / Baumansicht Nickles

Hallo zusammen.

Ich habe eine Excel-Datei mit einer Haupttabelle und
mehreren Untertabellen (Auto, Miete, Kleidung etc.)

Um die aktuellen Daten aus der Haupttabelle
(Spalte D : Auto, Miete, Kleidung etc, Spalte D die entsprechenden Werte)
in die jeweiligen Untertabellen zu übertragen verwende ich in :

Zelle C3 "=Teil(Zelle("Dateiname");Suchen("]";Zelle("Dateiname"))+1;31)" - Tabellenname -

Zelle D3 "=Sverweis(C3;Tabelle!D10:E20;2;0) - Werte -

Das funktioniert einwandfrei.

Nur : In "Dateiname" steht immer der Name der zuletzt geänderten (und somit berechneten Tabelle).

Ich möchte nun eine Neuberechnung beim Betreten der jeweiligen Untertabelle auslösen.

Wer hat da Erfahrung?

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Excel: Neuberechnung Tabellenblatt“
Optionen

Da mußt Du Dich mal mit Auto-Makros beschäftigen.
Ich benutze zB. eine zweite Tabelle, die berechnet automatisch, wenn ich in der ersten Tabelle was ändere.

Das Makro heißt

Private Sub Workbook_Open()
Sheets(1).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~
Hier kommt dann das eigentliche Makro.


Work_Open() ist ein Schlüsselwort für so ein Makro.
Und die Haupttabelle ist Sheets(1)
Die Ausführung findet dann in Sheets(2) statt.

bei Antwort benachrichtigen
jdeen peterson „Da mußt Du Dich mal mit Auto-Makros beschäftigen. Ich benutze zB. eine zweite...“
Optionen

Hallo Peterson!

Hab ich das richtig verstanden?


Wenn ich 3 Untertabellen habe :

Private Sub Workbook_Open()
Sheets(1).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(2).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(3).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(4).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
End Sub

oder natürlich mit Schleife.

Kann es leider jetzt nicht testen.

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Excel: Neuberechnung Tabellenblatt“
Optionen

Nein, so ist das nicht zu verstehen.
Das trifft nur auf meinen Fall zu.

Ich habe eine Arbeitsmappe, mit zwei Arbeitsblättern (Tabelle1 und Tabelle2).

Generell wird mein Makro ausgeführt, wenn ich die Arbeitsmappe öffne (workbook) und in Tabelle 1 (Sheets(1)) was ändere (OnEntry). Und das passiert nun im offen Zustand bei jeder Änderung immer wieder.

Wenn ich in Tabelle 2 was ändere, dann passiert nichts.

Um die Tabellen einzeln anzusprechen, mußt Du ein Makro für jede Tabelle schreiben.
Da kann man sogar mit dem Tabellennamen arbeiten.

Beispiel, wie man ein Makro in allen Tabellen ausführen könnte, aber nur in einer Tabelle zuläßt.

If ActiveSheet.Name "Tabellenname" Then Exit Sub

Hier wird das Makro generell verlassen, wenn es von der falschen Tabelle ausgeführt wird. Man kann sowas auch zum Verzeigen benutzen. (mit If ... Then)

Auto-Makros sind nützlich beim Öffnen/Schließen einer Datei oder beim Aktivieren/Deaktivieren eines Dateifensters.

Bei Dir wäre ein Makro mit dem Namen "Auto_Open" interessant.
Zeichne einfach mal ein Makro mit irgendwas auf, nenne es Auto_Open und speichere es ab.
Das bezieht sich auf eine Arbeitsmappe.

"Auto_Activate" bezieht sich auf das dazugehörige Tabellenfenster.

Ab jetzt mußt Du Dich selbst damit beschäftigen.


bei Antwort benachrichtigen
jdeen Nachtrag zu: „Excel: Neuberechnung Tabellenblatt“
Optionen

OK.

Auto_open ist bekannt.
Wird beim Öffnen der Mappe ausgeführt.
workbook_open ist wohl das gleiche.

Ich benötige worksheet_open - und das gibt es nicht.


Habe jetzt dieses gefunden :

Private Sub Worksheet_Activate()
Calculate
End Sub

Bin gerade bei der Arbeit.
Werde es bei Gelegenheit austesten.

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „OK. Auto_open ist bekannt. Wird beim Öffnen der Mappe ausgeführt....“
Optionen

Ja, das geht auch.

bei Antwort benachrichtigen
mumpel1 jdeen „OK. Auto_open ist bekannt. Wird beim Öffnen der Mappe ausgeführt....“
Optionen

Hallo!

Private Sub Workbook_Open()
Sheets(1).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(2).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(3).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
Sheets(4).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
End Sub


Es geht auch einfacher. Ohne Workbook_Open oder Worksheet_Activate. Das folgende Makro in "DieseArbeitsmappe". Dieses Makro hat den Vorteil, dass man es nur einmal schreiben muss und es trotzdem in allen Tabellen nutzen kann.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Calculate
End Sub

Es würde auch mit Hilfe einer Klassenprogrammierung gehen, dann könnte man das Makro auch in allen Arbeitsmappen global nutzen.

Gruß, René

bei Antwort benachrichtigen
jdeen Nachtrag zu: „Excel: Neuberechnung Tabellenblatt“
Optionen

Hallo René

das ist genau das was ich suchte !
Ich liebe 3-zeiler - kurz und bündig.

Funktioniert einwandfrei !

Danke

jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen