| VBA-Beispiel 047 | |
|
|
|
Fehlerquelle: per vba und ColorIndex Zellen suchen |
|
|
Falls Sie mit VBA Zellen aufgrund ihrer Hintergrundfarbe selektieren, sollten Sie dabei bedenken, daß die am Bildschirm angezeigt Farbe nicht
zwangläufig der tatsächlichen Zellfarbe entspricht. Konkret: auf dem Bildschirm sind 5 Zellen in der gleichen Farbe zu sehen. Die Zelle C3 wurde aber mit der bedingten Formatierung eingefärbt.
Wenn Sie jetzt mit Interior.ColorIndex = 35 nach hellgrün suchen, wird Zelle C3 nicht berücksichtigt... |
|
|
Sub Stolperstein() ' addiert alle Zellen mit hellgrüner Füllfarbe ' Zelle C3 hat aber xlNone Dim Zelle As Range Dim Summe As Long For Each Zelle In ActiveSheet.UsedRange If Zelle.Interior.ColorIndex = 35 Then Summe = Summe + Zelle End If Next Zelle MsgBox Summe End Sub Das Makro liefert scheinbar ein falsches Ergebnis nämlich 40. Um Missverständnisse zu vermeiden, könnte man bei jeder Zelle prüfen ob eine der drei bedingten Formatierungen der Füllfarbe Hellgrün entspricht: Sub Stolperstein_mit_Hinweis() Dim Zelle As Range Dim Summe As Long Dim i As Integer, anzWarnungen As Integer For Each Zelle In ActiveSheet.UsedRange If Zelle.Interior.ColorIndex = 35 Then Summe = Summe + Zelle End If ' so oft wie Zelle bedingte Formatierungen hat For i = 1 To Zelle.FormatConditions.Count ' prüfen ob bedingte Formatierung = Zellfarbe hellgrün If Zelle.FormatConditions.Item(i).Interior.ColorIndex = 35 Then anzWarnungen = anzWarnungen + 1 End If Next i Next Zelle If anzWarnungen > 0 Then MsgBox anzWarnungen & " Zelle(n) mit bedingter Formatierung" _ & vbNewLine & vbNewLine _ & "Summe: " & Summe _ & vbNewLine, vbCritical, "Vorsicht" Else MsgBox Summe End If End Sub Allerding ist es leider nicht möglich mit VBA abzubfragen, ob der Zellwert auch eine dieser Bedingungen gerade erfüllt. |
|
|
Download: vba047.zip |
|
|
relevante Links: |
|
| |