Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro ausführen bevor Tabellenblatt verlassen wird?





Frage

Hallo VBA Checker! Ich möchte ein Makro (Berechnen von Summen) auf einem Tabellenblatt ausführen bevor dieses verlassen wird. Hiermit klappt das leider nicht ganz: Private Sub Worksheet_Deactivate() Application.Run "Makro1" End Sub Das Makro wird dann nämlich auf dem "neuen" Tabellenblatt ausgeführt.... Hab ihr eine Idee? Vieln Dank schon mal! Christoph

Antwort 1 von Event

Hallo

versuch´s ´mal so:

Private Sub Worksheet_Deactivate()
Makro1
End Sub

Gruß

Antwort 2 von Christoph...

Danke für die schnelle Antwort.

Jetzt klappt es mit dem Makro auf dem Tabellenblatt, das verlassen wird.

Allerdings wird das Makro trotzdem auch noch auf dem "neuen" Tabellenblatt ausgeführt.

Das ist aber nicht so gut, da ich unterschiedliche Tabellenblätter habe. Nicht auf jedem ist das Makro durchführbar (geschützt etc).

Vielleicht noch ne Idee?

Danke! Christoph!

Antwort 3 von Coolpix

hallo Christoph,

wenn du im VB-Editor unter "Diese Arbeitsmappe"
folgendes eingibst:

 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Dim AktSheet As String
AktSheet = Sh.Name ´Name des Blattes das du verlässt
If Sh.Name = "Tabelle1" Then Call Makro1(AktSheet)
End Sub



und dein Makro so ergänzt:

 
Sub Makro1(Sheetname As String)
Dim AktSheet As String ´Name des Blattes das du auswählst
AktSheet = ActiveSheet.Name
    Sheets(Sheetname).Range("C3").FormulaR1C1 = "5888" ´nur als Beispiel
    Sheets(AktSheet).Select
End Sub



sollte es klappen...




Feedback fänd ich klasse

Greetings ;-)

Antwort 4 von Christoph...

ne tut mir leid. klappt doch nicht...hab mich verkuckt.

Das Makro wird leider immer noch NUR auf dem "neuen" Tabellenblatt ausgeführt....

Christoph

Antwort 5 von Christoph...

... bezog sich auf die Antwort von Event
Christoph

Antwort 6 von Christoph...

Danke für deine Antwort Coolpix!
Ich schaus mir erst morgen an....
Christoph

Antwort 7 von Event

Hallo

kenn Dein Makro1 ja nicht, aber kopier dieses doch einfach in das Erreignis

Private Sub Worksheet_Deactivate()

<-- hierhinein

End Sub


Gruß

Antwort 8 von Christoph...

An Event:

dein Vorschlag geht leider nicht. Auch wenn ich den Code direkt eingebe, wird der Code auf dem Tebellenblatt ausgeführt, auf das ich wechsle....

Ich habs jetzt mit Private einem Sub Worksheet_Change Ereignis gelöst.

Trotzdem danke.

Antwort 9 von Christoph...

An Coolpix:

Danke für deine Antwort. Ich hab mir deinen Code angeschaut, leider nicht verstanden. (Ich mach VBA erst seit 4 Wochen...)

Ich habs jetzt mit Private einem Sub Worksheet_Change Ereignis gelöst. Geht auch, deswegen mach dir nicht die Mühe mir alles zu erklären. Aber was ist den z.B "ByVal Sh As Object"?

Dankeschön. Christoph

Antwort 10 von Coolpix

hallo nochmal,

1.
wenn du wenn du im VB-Editor unter "Diese Arbeitsmappe"
im linke Dropdown "Workbook" auswählst und dann im rechten Dropdown "SheetDeactivate" dann wird automatisch der Prozedurrumpf:


Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

End Sub


ins Projekt geschrieben.

2.
"ByVal Sh As Object" sorgt dafür, daß die Variable Sh einige Eigenschaften des, in diesem Fall, verlassenen Blattes annimmt.
z.B. Name und Index
man kann dabei über Sh.Name bzw. Sh.Index an die gewünschte Information kommen.


ich hoffe, das trägt etwas zu deinem Verständnis bei...

Feedback fänd ich klasse...

Greetings ;-)

Antwort 11 von peko

Würd mich auch unheimlich interessieren!

Gruß peko