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

Workbook_SheetChange

Forumthread: Workbook_SheetChange

Workbook_SheetChange
15.01.2007 14:59:28
Friedbert
Liebe Excelianer,
ich habe mit obigem Ereignis ein Problem:
beim Makrostart werden in einer Arbeitsmappe mehrere Tabellen angelegt und benannt. Künftig soll dann ein bestimmtes Makro automatisch gestartet werden, wenn in einer bestimmten Tabelle in einer bestimmten Zelle eine Eingabe erfolgt ist.
Wie kann ich das bewerkstelligen?
Im Moment wird das Makro beim Anlegen jeder Tabelle aktiviert. Ich habe obiges Ereignis im Bereich "Diese Arbeitsmappe" eingestellt. Was tun!
Für Eure Hilfe vielen Dank im Voraus!
Friedbert
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_SheetChange
15.01.2007 17:43:26
IngGi
Hallo Friedbert,
stell den Code in's Modul desjenigen Tabellenblattes, in dem die Eingabe zum Start des Makros vorgenommen werden soll und nimm das Worksheet_Change-Ereignis. Folgende Struktur startet das Makro, wenn in die Zelle A1 der Text "Makro starten" eingegeben wird.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
   If Target = "Makro starten" Then
      'Hier dein Makro
   End If
End If
End Sub


Gruß Ingolf
Anzeige
AW: Workbook_SheetChange
16.01.2007 10:17:07
Friedbert
Hallo Ingolf,
vielen Dank für Deine schnelle Reaktion. Leider hilft mir Dein Vorschlag deshalb nicht weiter, weil die Tabelle, in der das Makro gestartet werden soll, mit einem vorherigen Makro erst erstellt wird. Das Aktualisierungsmakro soll anschießend laufen.
Vielleicht gibt es doch eine Lösung, die übergeordnet (Workbook_SheetChange) ist und sich nur auf eine Zelle einer Tabelle bezieht?!
Für weitere Unterstützung schon vorab vielen Dank!
Friedbert
Anzeige
AW: Workbook_SheetChange
16.01.2007 11:44:58
IngGi
Hallo Friedbert,
das geht natürlich auch. Du musst dann nur noch zusätzlich auf den richtigen Tabellenblattnamen prüfen:

Private Sub Workbook_SheetChange(ByVal Sh As ObjectByVal Target As Range)
If Sh.Name = "Tabellenblattname" Then
   If Target.Address = "$A$1" Then
      If Target = "Makro starten" Then
         'Hier dein Makro
      End If
   End If
End If
End Sub


Gruß Ingolf
Anzeige
AW: Workbook_SheetChange
16.01.2007 17:13:27
Friedbert
Hallo Ingolf,
vielen Dank!
Gruß Friedbert
;
Anzeige

Infobox / Tutorial

Automatisierung mit Workbook_SheetChange in Excel


Schritt-für-Schritt-Anleitung

Um das Workbook_SheetChange-Ereignis effektiv zu nutzen, folge dieser Schritt-für-Schritt-Anleitung:

  1. Öffne deine Excel-Arbeitsmappe und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Suche im Projekt-Explorer die Arbeitsmappe, in der du das Makro hinzufügen möchtest.
  3. Klicke mit der rechten Maustaste auf "Diese Arbeitsmappe" und wähle "Code anzeigen".
  4. Füge den folgenden Code in das Codefenster ein:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
       If Sh.Name = "Tabellenblattname" Then
           If Target.Address = "$A$1" Then
               If Target.Value = "Makro starten" Then
                   'Hier dein Makro aufrufen
               End If
           End If
       End If
    End Sub
  5. Ersetze "Tabellenblattname" mit dem Namen deines spezifischen Arbeitsblattes.
  6. Speichere die Datei als Makro-fähige Arbeitsmappe (.xlsm) und schließe den VBA-Editor.

Jetzt wird dein Makro automatisch gestartet, wenn in der Zelle A1 des spezifischen Tabellenblattes der Text "Makro starten" eingegeben wird.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht gestartet, wenn der Text eingegeben wird.
    Lösung: Überprüfe, ob der Tabellennamen korrekt im Code angegeben ist. Stelle sicher, dass die Zelle A1 genau den Text "Makro starten" enthält.

  • Fehler: Das Makro wird bei jeder Änderung in der Tabelle aktiviert.
    Lösung: Stelle sicher, dass die Bedingung für die richtige Zelle (z.B. A1) und den Tabellennamen korrekt implementiert ist.


Alternative Methoden

Falls du das Worksheet_Change-Ereignis für ein spezifisches Tabellenblatt verwenden möchtest, kannst du dies tun:

  1. Gehe zu dem spezifischen Tabellenblatt im VBA-Editor.
  2. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$A$1" And Target.Value = "Makro starten" Then
           'Hier dein Makro aufrufen
       End If
    End Sub

Diese Methode ist nützlich, wenn du nur das spezifische Blatt überwachen möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Workbook_SheetChange-Ereignis verwenden kannst:

  • Automatisches Update: Starte ein Update-Makro, wenn der Benutzer einen bestimmten Wert in Zelle A1 ändert.
  • Datenvalidierung: Überprüfe, ob in Zelle B1 ein gültiger Wert eingegeben wird, und starte ein entsprechendes Makro, wenn dies der Fall ist.

Tipps für Profis

  • Nutze Application.EnableEvents = False am Anfang deines Makros, um rekursive Aufrufe zu vermeiden. Vergiss nicht, es am Ende wieder auf True zu setzen.

  • Dokumentiere deinen Code gut, um später Anpassungen vorzunehmen oder anderen zu helfen, die deinen Code nutzen.

  • Experimentiere mit verschiedenen Excel-VBA-Ereignissen, wie Workbook_SheetSelectionChange, um deine Automatisierungen noch weiter zu verbessern.


FAQ: Häufige Fragen

1. Kann ich mehrere Zellen überwachen?
Ja, du kannst die Bedingungen im Code erweitern, um mehrere Zellen zu überwachen. Nutze logische Operatoren wie Or, um verschiedene Adressen zu überprüfen.

2. Was ist der Unterschied zwischen Workbook_SheetChange und Worksheet_Change?
Workbook_SheetChange überwacht Änderungen in allen Arbeitsblättern der Arbeitsmappe, während Worksheet_Change nur für das spezifische Arbeitsblatt gilt, in dem der Code platziert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige