Wie kann man die Eingabe in einem Excel-Blatt überwachen, wenn eine Zelle in einem bestimmten Bereich geändert wird.
Lösung
Man kann in Excel den Worksheet Change auf Target Range untersuchen
Worksheet_Change Event erstellen
Hierzu öffnet man unter Alt-F11 den vba Makrobereich.
Im vbaProject-Bereich wählt man das Arbeitsblatt als Tabelle(xxx)
Dann kann man den Objektbereich Worksheet öffen (zellen oben links)
Und rechts den Event: Change auswählen
Dann kann man den Eingabebereich wie folgt abfragen mit Target.Address
Private Sub Worksheet_Change(ByVal Target As Range) '--------< Worksheet_Change(ImputCell) >-------- '*After_Cell_Input_Change If Target.Address Like "$B$*" Then MsgBox "treffer" End If '--------</ Worksheet_Change(ImputCell) >-------- End Sub
|
Weitere Möglichkeiten zum Prüfen des Eingabebereichs
Folgende vba Code-Möglichkeiten kann man zur Erkennung des Bereichs einer kompletten Spalte anwenden
1) Vergleich der Address
Über Wildcard wie *
2) Vergleich über Intersect(Eingabebereich , Erlaubter_Bereich)
a) über genaue Adressbenennung B1:B1000
b) über Spalten-Adresse ohne Zeilen B:B
c) über Columns Eigenschaft
Private Sub Worksheet_Change(ByVal Target As Range) '--------< Worksheet_Change(ImputCell) >-------- '*After_Cell_Input_Change If Target.Address Like "$B$*" Then MsgBox "treffer Target.Address Like '$B$*'" End If
'oder If Not Intersect(Target, Range("B1:B10000")) Is Nothing Then MsgBox "treffer Intersect(Target, Range('B1:B10000'))" End If 'oder If Not Intersect(Target, Range("B:B")) Is Nothing Then MsgBox "treffer Intersect(Target, Range('B:B'))" End If
If Not Intersect(Target, Columns("B:B")) Is Nothing Then MsgBox "treffer Intersect(Target, Columns('B:B'))" End If
'--------</ Worksheet_Change(ImputCell) >-------- End Sub
|