Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$r$6" Then
Call Makro1
End If
End Sub
Makro wird nich gestartet, sondern das Makro Fenster öffnet sich.
Was mache ich falsch?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$r$6" Then
Call Makro1
End If
End Sub
If Not Intersect(target, Range("R6")) is nothing then
Call Makro1
end if
Gruß,Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$R$6" Then
Call Makro1
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Gruß WernerUm ein VBA-Makro auszuführen, wenn sich der Wert einer bestimmten Zelle ändert, musst Du den Worksheet_Change
-Event verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Wähle das Arbeitsblatt, in dem Du das Makro implementieren möchtest, im Projekt-Explorer aus.
Füge folgenden Code in das Code-Fenster ein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("R6")) Is Nothing Then
Call Makro1
End If
End Sub
Speichere Deine Datei als Makro-fähige Arbeitsmappe (z.B. .xlsm
).
Ändere den Wert in Zelle R6 und überprüfe, ob das Makro wie gewünscht ausgeführt wird.
Hier sind einige häufige Probleme und deren Lösungen:
Makrofenster öffnet sich anstelle der Ausführung: Stelle sicher, dass der Code im richtigen Modul (Standardmodul, nicht in einem Klassenmodul) platziert ist. Der Code sollte im Arbeitsblattmodul sein, nicht im Modul "Modul1".
Zellenadresse nicht großgeschrieben: Achte darauf, dass die Zellenadresse in Großbuchstaben eingegeben wird, z.B. "$R$6"
.
Code wird nicht ausgelöst: Überprüfe, ob die Datei als .xlsm
gespeichert wurde und dass Makros in Deinen Excel-Einstellungen aktiviert sind.
Falls Du eine andere Methode ausprobieren möchtest, kannst Du den SelectionChange
-Event verwenden. Beachte jedoch, dass dieser Event nur reagiert, wenn die Zelle ausgewählt wird und nicht, wenn der Inhalt geändert wird. Hier ein Beispiel:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$R$6" Then
Call Makro1
End If
End Sub
Hier sind einige Beispiele, wie Du den Worksheet_Change
-Event nutzen kannst:
Makro bei Änderung in mehreren Zellen: Wenn Du möchtest, dass das Makro auch bei Änderungen in anderen Zellen wie J2
oder A1
ausgeführt wird:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("R6,J2,A1")) Is Nothing Then
Call Makro1
End If
End Sub
Ereignis für andere Blätter: Um das Makro auf einem anderen Arbeitsblatt auszuführen, musst Du den entsprechenden Arbeitsblattnamen angeben:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, ThisWorkbook.Sheets("Sheet1").Range("R6")) Is Nothing Then
Call Makro1
End If
End Sub
Verwende Haltepunkte zur Fehlersuche: Setze Haltepunkte im Code, um zu sehen, an welcher Stelle der Code eventuell nicht funktioniert. Dies hilft bei der Fehlersuche.
Überwachung hinzufügen: Nutze die Überwachungsfunktion im VBA-Editor, um den Wert von Target.Address
zu beobachten, während das Makro ausgeführt wird.
Saubere Programmierung: Halte Deinen VBA-Code gut strukturiert und dokumentiert, um zukünftige Fehler zu vermeiden und die Wartung zu erleichtern.
1. Warum wird mein Makro nicht ausgeführt?
Stelle sicher, dass Du das richtige Ereignis (Worksheet_Change) verwendest und dass die Adresse der Zelle korrekt eingegeben ist.
2. Muss ich Excel neu starten, um Änderungen zu sehen?
In der Regel nicht. Speichere Deine Datei und teste die Änderungen direkt im VBA-Editor. Manchmal kann ein Neustart von Excel jedoch hilfreich sein, wenn Probleme weiterhin bestehen.
3. Wie kann ich sicherstellen, dass mein Makro nur bei bestimmten Bedingungen ausgeführt wird?
Du kannst zusätzliche Bedingungen in den If
-Block einfügen, um die Ausführung des Makros gezielt zu steuern.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen