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ß
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!
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:
und dein Makro so ergänzt:
sollte es klappen...
Feedback fänd ich klasse
Greetings ;-)
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
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
Christoph
Antwort 6 von Christoph...
Danke für deine Antwort Coolpix!
Ich schaus mir erst morgen an....
Christoph
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ß
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.
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
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:
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 ;-)
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
Gruß peko