ich möchte, daß eine Aktion ausgelöst wird, wenn eine Zelle im Bereich C9:E10 verändert wird. Wie kann mir das gelingen?
Vielen Dank
Matthias
ich möchte, daß eine Aktion ausgelöst wird, wenn eine Zelle im Bereich C9:E10 verändert wird. Wie kann mir das gelingen?
Vielen Dank
Matthias
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set Bereich = Range("C9:E10")
If Intersect(Target, Bereich) Is Nothing Then Exit Sub
Hier dein Makro und alles läuft!
End Sub
leider hast Du Deine Aufgabe nich klar bescgrieben. Hier mal ein Code der die Schriftfarbe ändert bei Eingabe ubd auch für den Fall das mehere Zellen mit einmal gefüllt werden.
Gruß Hajo
Um eine Aktion auszulösen, wenn eine Zelle im Bereich C9:E10 verändert wird, kannst Du den folgenden VBA-Code in das entsprechende Arbeitsblatt-Modul einfügen. Dies geschieht über den Visual Basic for Applications (VBA) Editor:
ALT + F11
, um den VBA-Editor zu öffnen.Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("C9:E10")
If Not Intersect(Target, Bereich) Is Nothing Then
' Hier Deine Aktion einfügen
End If
End Sub
Dieser Code überprüft, ob die geänderte Zelle im Bereich C9:E10 liegt. Wenn ja, kannst Du an der Stelle, die mit ' Hier Deine Aktion einfügen
kommentiert ist, Deinen eigenen VBA-Code einfügen.
Fehler: "Compile error: Variable not defined"
Lösung: Stelle sicher, dass alle Variablen korrekt deklariert sind. In diesem Fall könnte Bereich
nicht definiert sein, wenn Du die Dim
-Anweisung weggelassen hast.
Fehler: Aktion wird nicht ausgeführt
Lösung: Überprüfe, ob der Bereich korrekt festgelegt ist und ob die Intersect-Funktion das richtige Ziel überprüft. Möglicherweise musst Du den Code im Worksheet_Change
-Event verwenden, nicht im Worksheet_SelectionChange
.
Eine alternative Methode zur Überwachung von Änderungen in Excel ist die Verwendung des Worksheet_SelectionChange
-Ereignisses. Hier ist ein Beispiel:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("C9:E10")
If Not Intersect(Target, Bereich) Is Nothing Then
' Hier Deine Aktion einfügen
End If
End Sub
Diese Methode wird jedoch nur ausgelöst, wenn Du eine Zelle auswählst, nicht wenn Du ihren Inhalt änderst.
Wenn Du beispielsweise die Schriftfarbe ändern möchtest, wenn eine Zelle im Bereich C9:E10 geändert wird, kannst Du den folgenden Code verwenden:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("C9:E10")
If Not Intersect(Target, Bereich) Is Nothing Then
Target.Font.Color = RGB(255, 0, 0) ' Ändert die Schriftfarbe zu Rot
End If
End Sub
Das oben genannte Beispiel zeigt, wie Du die Schriftfarbe der geänderten Zelle änderst, wenn sie im angegebenen Bereich liegt.
Debugging: Nutze Debug.Print
, um den Wert von Target
zu überprüfen, falls Du Schwierigkeiten hast, den richtigen Bereich zu identifizieren.
Leistung: Vermeide komplexe Berechnungen im Worksheet_Change
-Ereignis, da dies die Leistung beeinträchtigen kann. Halte Deinen Code so leicht wie möglich.
VBA-Referenzen: Wenn Du mit ByVal Target As Range
arbeitest, achte darauf, wie Du diesen Parameter in Deinen weiteren Berechnungen verwendest.
1. Was bedeutet ByVal Target As Range
?
ByVal Target As Range
ist ein Parameter, der die Zelle(n) angibt, die geändert wurden. Es erlaubt Dir, diese Änderungen im Code zu überwachen.
2. Kann ich mehrere Bereiche gleichzeitig überwachen?
Ja, Du kannst mehrere Bereiche mit der Union
-Funktion kombinieren. Beispielsweise:
Set Bereich = Union(Range("C9:E10"), Range("G1:G5"))
Somit kannst Du verschiedene Bereiche überwachen und entsprechende Aktionen auslösen.
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