Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro ausführen bei Blatt wechsel

Makro ausführen bei Blatt wechsel
Valentino
Hallo
Ich möchte, dass ein Makro ausgeführt wird, sobald ich das Tabellenblatt verlasse. Folgenden Code habe ich bereits, finde die korrekte Lösung jedoch nicht. Kann mir jemand helfen?

Sub worksheet_deactivate()
Dim IntAntwort As Integer
IntAntwort = MsgBox("Projekte mit NULL geplanten Stunden. Willst du diese jetzt planen?", _
vbYesNo, "Projekte mit NULL")
If IntAntwort = vbNo Then
Else
Cells.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
End If
End Sub

Besten Dank und schönen Abend.
Anzeige
Was ist deine Frage? o.w.T.
30.03.2012 17:18:01
Reinhard

AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:18:41
Hajo_Zi
Hallo Valention,
der Code ist korrekt. Find läuft bei mir nur auf ein Fehler.

AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:21:14
Valentino
Das Makro funktioniert bei mir auch.
Es klappt jedoch nicht automatisch bei einem Blattwechsel. Ich bin etwas ratlos!
Anzeige
AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:25:03
Hajo_Zi
Dann hast Du es nicht an der korrekten Stelle. Es gehört unter die Tabelle. Nicht Modul.
Gruß Hajo
AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:34:58
Valentino
Danke. Das funktioniert. Leider aber nur beim Wechsel von z. Bsp. Tabelle 1 zu Tabelle 2. Sobald ich aber auf Tabelleblatt 3 wechsle klappts nicht mehr. Wie kann ich bei jedem Tabellenblattwechsel das Makro ausführen?
Ausserdem habe ich gerade festgestellt, dass die Überprüfung der Daten im aktivierten Sheet stattfindet. Shit! Werde ich auch noch hinkriegen.
Anzeige
AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:38:10
Hajo_Zi
benutze
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
unter DieseArbeitsmappe.
Gruß Hajo
AW: Makro ausführen bei Blatt wechsel
30.03.2012 17:59:48
Hajo_Zi
auf der Varianblen Sh steht die Tabelle die verlassen wurde.
Gruß Hajo
Anzeige
AW: Makro ausführen bei Blatt wechsel
30.03.2012 19:43:53
Hajo_Zi
man sollte mit With Sh und Punkt vor Cells, Range usw. arbeiten.
Gruß Hajo

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Makro ausführen bei Blattwechsel in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle die Arbeitsmappe aus: Klicke im Projekt-Explorer auf „DieseArbeitsmappe“.

  3. Füge den Code ein: Verwende den folgenden Code, um das Makro auszuführen, wenn du ein Tabellenblatt verlässt:

    Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
       Dim IntAntwort As Integer
       IntAntwort = MsgBox("Projekte mit NULL geplanten Stunden. Willst du diese jetzt planen?", _
       vbYesNo, "Projekte mit NULL")
       If IntAntwort = vbYes Then
           With Sh
               .Cells.Find(What:="0", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
               xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
               , SearchFormat:=False).Activate
           End With
       End If
    End Sub
  4. Speichere die Arbeitsmappe: Stelle sicher, dass du die Datei als „Excel-Makro-aktivierte Arbeitsmappe“ (.xlsm) speicherst.


Häufige Fehler und Lösungen

  • Makro wird nicht ausgeführt: Stelle sicher, dass der Code unter „DieseArbeitsmappe“ und nicht in einem Modul eingefügt wurde.
  • Fehlermeldung beim Finden von Zellen: Überprüfe, ob die Zelle mit dem Wert „0“ tatsächlich vorhanden ist. Andernfalls kann das Find-Kommando fehlerhaft sein.
  • Makro funktioniert nicht bei jedem Blattwechsel: Der Code muss in der Workbook_SheetDeactivate-Subroutine platziert werden, um bei jedem Blattwechsel zu funktionieren.

Alternative Methoden

  • Verwenden von Worksheet_Activate: Statt beim Deaktivieren des Blattes zu arbeiten, kannst du auch das Makro beim Aktivieren eines Blattes ausführen. Benutze dafür:

    Private Sub Worksheet_Activate()
       ' Dein Code hier
    End Sub
  • Ereignisgesteuertes Programmieren: Nutze die Ereignisse in VBA, um spezifische Aktionen bei verschiedenen Benutzerinteraktionen auszuführen.


Praktische Beispiele

  1. Beispiel für das Auffinden von Werten: Dieses Makro sucht nach bestimmten Werten, wenn das Blatt gewechselt wird. Es kann leicht angepasst werden, um andere Bedingungen zu erfüllen.
  2. Datenüberprüfung bei Blattwechsel: Setze Bedingungen, die die Benutzer auffordern, Daten zu überprüfen, bevor sie das Blatt verlassen.

Tipps für Profis

  • Verwende With-Anweisung: Für klareren und effizienteren Code kannst du die With-Anweisung verwenden, um die Lesbarkeit zu erhöhen.
  • Debugging: Nutze Debug.Print, um Fehlersuche zu betreiben. So kannst du verfolgen, welche Bedingungen erfüllt sind.
  • Fehlerbehandlung: Implementiere On Error Resume Next, um Laufzeitfehler zu vermeiden und den Code robuster zu machen.

FAQ: Häufige Fragen

1. Warum wird mein Makro nicht bei jedem Blattwechsel ausgeführt? Stelle sicher, dass der Code in der Workbook_SheetDeactivate-Subroutine und nicht in einem Modul steht.

2. Wie kann ich ein Makro ausführen, wenn ich ein bestimmtes Blatt aktiviere? Verwende die Worksheet_Activate-Subroutine, um Makros beim Aktivieren eines Blattes auszuführen.

3. Welche Excel-Version wird benötigt, um VBA auszuführen? Die meisten modernen Excel-Versionen (ab Excel 2007) unterstützen VBA. Stelle sicher, dass du eine Version verwendest, die Makros zulässt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige