Ja, das Makro bezieht sich auf ein einzelnes Tabellenblatt.
Zum Beispiel: In Excel Rechtsklick auf eines der Blätter und "Code anzeigen"; dann würde man im sich öffnenden VBA-Editor das Makro einfügen und das gilt dann nur für dieses eine Blatt.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo SafeExit
Application.EnableEvents = False
If Not Intersect(Target, Range("A1")) Is Nothing Then
Range("B1").Value = Range("B1").Value + Range("A1").Value
End If
Range("A1").Value = 0
SafeExit:
Application.EnableEvents = True
End Sub
Damit dieses Makro auf mehrere Tabellenblätter angewendet wird - Blätter die ignoriert werden sollen, werden im Makro angegeben - geht man im VBA-Editor im Projekt-Explorer auf DieseArbeitsmappe / ThisWorkbook, öffnet dieses per Doppelklick und fügt dort das Makro ein:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Blätter die ignoriert werden sollen
Select Case Sh.Name
Case "Übersicht" ', "Tabelle1", "Tabelle2", "usw"
Exit Sub
End Select
'springe zur angegebenen Marke im Makro
'wenn ein Laufzeitfehler auftritt
On Error GoTo ErrHandler
'Makro-Ereignisse: AUS
Application.EnableEvents = False
With Sh
If Not Intersect(Target, .Range("A1")) Is Nothing Then
.Range("B1").Value = .Range("B1").Value + .Range("A1").Value
End If
.Range("A1").Value = 0
End With
'Beispiel: Im Tabellenblatt "Übersicht" die Zelle A1 ansprechen.
' Jedesmal wenn auf einer der Tabelle die Zelle B1 aufaddiert wurde,
' wird im Blatt "Übersicht" der Wert in A1 um 1 erhöht
With Worksheets("Übersicht")
.Range("A1").Value = .Range("A1").Value + 1
End With
Call MsgBox("Workbook_SheetChange() des Blattes '" & Sh.Name & "'", vbInformation)
SafeExit:
'Makro-Ereignisse: AN
Application.EnableEvents = True
Exit Sub
ErrHandler:
Call MsgBox("Workbook_SheetChange()" & vbNewLine & vbNewLine & _
Err.Description, vbCritical, _
"Fehler " & Err.Number)
GoTo SafeExit
End Sub
Grüße
|