Verbesserung des Excel-Loggings mit VBA-Makro

Wie kann ich ein VBA-Makro in Excel verbessern, um Multi-Selektionen und das Löschen von Spalten zu loggen? Wie kann ich separate Private Subs verwenden, um Änderungen in einem Tabellenblatt zu erfassen und die Werte zu loggen?

Uhr
Um das Logging in Excel mit einem VBA-Makro zu optimieren, gibt es verschiedene Ansätze die betreffend das Aufzeichnen einzelner Änderungen hinausgehen. In Ihrem vorhandenen Makro werden nur einzelne Änderungen geloggt und Sie fragen sich, ob Sie mit separaten privaten Subs die Multi-Selektion und das Löschen von Spalten erfassen können. Darüber hinaus möchten Sie aufzeichnen was die Ziel- und "PreVal"-Adresse war. Hier sind einige Schritte die Sie unternehmen können um Ihr VBA-Makro zu verbessern.

1. Verwendung von For Each um Multi-Selektion erfassen:
Das Target-Objekt in VBA repräsentiert den Bereich, auf den die Aktion angewendet wird. Um Multi-Selektionen zu erfassen, können Sie das For Each-Schleifenkonstrukt verwenden um durch jeden Bereich innerhalb des Targets zu iterieren. Sie können dann die erforderlichen Aktionen für jede Zelle durchführen.

2. Verwendung von Intersect um Änderungen zu prüfen:
Mittels Intersect können Sie prüfen welche der global abgelegten Zelladressen in der Target-Selektion liegen. Auf diese Weise können Sie feststellen welche Zellen betroffen sind und die Werte auf Änderungen überprüfen.

3. Verwendung von separaten privaten Subs:
Sie können separate private Subs verwenden um verschiedene Arten von Aktionen zu erfassen. Zum Beispiel könnten Sie eine private Sub für das Erfassen von Änderungen, eine andere für das Erfassen von Multi-Selektionen und eine weitere für das Erfassen von Spaltenlöschungen erstellen. Dies kann dazu beitragen – den Code übersichtlicher und einfacher zu warten zu machen.

4. Verwendung von globalen Variablen zur Speicherung von Änderungen:
Wenn Sie die Zelladressen und Werte für die Überwachung speichern müssen, können Sie globale Variablen wie Arrays oder Listen/Matrizen verwenden. In diesen globalen Variablen können Sie die Zelladressen und die entsprechenden Werte speichern um Änderungen zu verfolgen.

Ein Beispiel für eine verbesserte Struktur des VBA-Makros könnte wie folgt aussehen:

```vb
Dim PreVal
Dim TrackedChanges(1 To 100⸴1 To 2) As Variant ' Beispiel für die Verwendung einer globalen Array-Variable

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each rCell In Target
' Aktionen für Multi-Selektion hier durchführen
Next rCell
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' Überprüfen welche der global abgelegten Zelladressen in Target liegen und die Werte auf Änderung überprüfen
For i = 1 To 100
If Not IsEmpty(TrackedChanges(i, 1)) Then
If Not Intersect(Target, Range(TrackedChanges(i, 1))) Is Nothing Then
' Aktionen für Änderungen hier durchführen
End If
End If
Next i
End Sub
```

In diesem Beispiel werden separate private Subs verwendet um Änderungen und Multi-Selektionen zu erfassen. Darüber hinaus wird eine globale Array-Variable verwendet um die verfolgten Änderungen zu speichern und später auf sie zuzugreifen.

Durch die Implementierung dieser Verbesserungen kann das VBA-Makro in Excel effektiver und umfassender Änderungen erfassen, einschließlich Multi-Selektionen und Spaltenlöschungen.






Anzeige