Ereignismakro bei Änderung innerhalb Bereiches
09.09.2009 11:43:03
NoNet
Hallo Nibio,
Zelländerungen (auch Löschen von Zellinhalten) lösen in VBA ein sog. "Ereignis" (Event) aus.
Auf dieses Ereignis kann man mit einem entsprechenden Code reagieren.
Wenn z.B. bei Änderung von Zellen in einem bestimmten Bereich auf einem bestimmten Tabellenblatt ein VBA-Code ausgeführt werden soll, dann kann man diesen in das Ereignis Private Sub Worksheet_Change(ByVal Target As Range) schreiben (das sog. "Ereignis-Makro").
Dieses Ereignismakro muss im "Klassenmodul" des Tabellenblattes im VBA-Editor stehen.
Das Klassenmodul für "Tabelle1" erreichst Du z.B., indem Du im Blattregister das Tabellenblatt per Rechtsklick anklickst und dann im Kontextmenü "Code anzeigen..." auswählst.
Dort kopierst Du das folgende Ereignismakro hinein :
Private Sub Worksheet_Change(ByVal Target As Range)
'Code wird immer ausgeführt, wenn eine Änderung im Tabellenblatt druchgeführt wurde
Dim rngBereich As Range
'Zellen/Bereiche für die das Makro ausgeführt werden soll
Set rngBereich = Range("C10:D10,F10:G15,I2:K5") 'Bereich bitte anpassen !
If Not Intersect(Target, rngBereich) Is Nothing Then
'Hier Dein Makro-Code, z.B. :
MsgBox "Hallo Nibio !"
End If
End Sub
In diesem Beispiel wird die MsgBox nur dann ausgeführt, wenn mind. 1 Zelle im Bereich Range("C10:D10,F10:G15,I2:K5") geändert/gelöscht wurde. Diesen Bereich kannst Du natürlich auf Deine Bedürfnisse anpassen !
Gruß, NoNet