Excel: Auflisten der verschiedenen Zellformate per VBA bzw. .NET
Hallo Forum,
in Excel kann ich verschiedenste Formatierungen auf Zellen anwenden (Hintergrund, Schriftart, Rahmen, etc.). Diese Einstellungen sind im Interior-Objekt hinterlegt.
Ich möchte gern eine Auflistung der verschiedenen Formatierungen per VBA bzw. per VB.NET erstellen, die Zahl der verwendeten Formatierungen ausgeben und ggf. auch die Formatierungen auflisten. Dazu hatte ich mir folgenden VBA-Code überlegt:
Bereits beim Zuweisen des Interior-Objekts zu meiner Variable bricht das Ganze ab. Ist ein komplettes Auslesen bzw. Vergleichen des Interior-Objekts überhaupt möglich oder müsste ich alle Eigenschaften einzeln abfragen und abgleichen?
Vielen Dank im voraus,
M. Born
in Excel kann ich verschiedenste Formatierungen auf Zellen anwenden (Hintergrund, Schriftart, Rahmen, etc.). Diese Einstellungen sind im Interior-Objekt hinterlegt.
Ich möchte gern eine Auflistung der verschiedenen Formatierungen per VBA bzw. per VB.NET erstellen, die Zahl der verwendeten Formatierungen ausgeben und ggf. auch die Formatierungen auflisten. Dazu hatte ich mir folgenden VBA-Code überlegt:
Sub test()
Dim zähler As Integer
Dim Formatierung(10) As Interior
With Application
zähler = 0
Formatierung(1) = .Cells(1, 1).Interior
For i = 1 To .Worksheets(1).UsedRange.Row
For j = 1 To .Worksheets(1).UsedRange.Column
For k = 1 To 10
If .Cells(i, j).Interior <> Formatierung(k) Then
Formatierung(k + 1) = .Cells(i, j).Interior
zähler = zähler + 1
End If
Next
Next
Next
MsgBox (zähler)
End With
End Sub
Bereits beim Zuweisen des Interior-Objekts zu meiner Variable bricht das Ganze ab. Ist ein komplettes Auslesen bzw. Vergleichen des Interior-Objekts überhaupt möglich oder müsste ich alle Eigenschaften einzeln abfragen und abgleichen?
Vielen Dank im voraus,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6462882312
Url: https://administrator.de/contentid/6462882312
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Moin.
Da wirst du wohl die Eigenschaften einzeln abfragen müssen, denn das Object kannst du hier nicht vergleichen weil es bei jeder Zelle eine andere Instanz ist egal welches Format die Zelle besitzt.
Hier mal mit den meisten (nicht allen) was gescriptet, die Eigenschaften der Properties alle in Strings gewandelt:
Das vielleicht mal als Ansatz.
Cheers Briggs
Da wirst du wohl die Eigenschaften einzeln abfragen müssen, denn das Object kannst du hier nicht vergleichen weil es bei jeder Zelle eine andere Instanz ist egal welches Format die Zelle besitzt.
Hier mal mit den meisten (nicht allen) was gescriptet, die Eigenschaften der Properties alle in Strings gewandelt:
Sub FormateAuflisten()
Dim cell As Range, dict As Object, format As String
Set dict = CreateObject("Scripting.Dictionary")
For Each cell In ActiveSheet.UsedRange
With cell.Interior
format = CStr(.Color) & "|" & CStr(.ColorIndex) & "|" & CStr(.Pattern) & "|" & CStr(.PatternColor) & "|" & CStr(.PatternColorIndex) & "|" & CStr(.PatternThemeColor) & "|" & CStr(.PatternTintAndShade) & "|" & CStr(.ThemeColor) & "|" & CStr(.TintAndShade)
If dict.Exists(format) Then
dict.Item(format) = dict.Item(format) + 1
Else
dict.Add format, 1
End If
End With
Next
For Each Key In dict.Keys
MsgBox "Format: " & Key & " ## Anzahl = " & dict.Item(Key)
Next
End Sub
Cheers Briggs