ich habe eine kleine Frage zur Verwendung der "Bedingten Formatierung" in VBA.
Zur Kennzeichnung redundanter Daten in einer Spalte möchte ich diese per Bedingte Formatierung farblich hervorheben.
Manuell würde ich dazu den Bereich markieren (z.B. A2:A10) und folgende Funktion als Bedingung eingeben : =ZÄHLENWENN($A$2:$A$10;$A2)>1
Das funktioniert grundsätzlich auch unter VBA, der Code könnte entsprechend aussehen :
Sub BedingteFormatierungMitFunktion()
With Range("A2:A10")
.Range("A1").Select 'erste Zelle des Bereiches markieren =>A2
.FormatConditions.Delete 'Zuerst alle Bedingungen löschen
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ZÄHLENWENN($A$2:$A$10;$A2)>1"
.FormatConditions(1).Interior.ColorIndex = 40
End With
End Sub
Was mich nun stört, ist, dass die Funktion hier im Code hardcodiert mit deutschem Funktionsnamen ZÄHLENWENN enthalten ist. Ich vermute, dass der Code in nichtdeutschen (z.B. englischen, franz., spanischen) Excel-Versionen nicht funktionieren wird.Versuchsweise habe ich den Code in die englische Schreibweise übersetzt :
(=COUNTIF($A$2:$A$10,$A2)>1 bzw. anstelle , auch ;), doch das akzeptiert die deutsche EXCEL-Version nicht.
Als "Workaround" fällt mir nur ein, die englische Version per .Formula temporär in eine Zelle (B2) zu schreiben (dort wird sie im Excel-Tabellenblatt dann in der regionalisierten Sprachversion - also z.B. in deutsch - übersetzt und angezeigt) und mit .FormulaLocal im Code der Bedingten Formatierung wieder auszulesen :
Sub BedingteFormatierungMitRegionalisierterFunktion()
[B2].Formula = "=COUNTIF($A$2:$A$10,$A2)>1" 'englische Version
With Range("A2:A10")
.Range("A1").Select 'erste Zelle des Bereiches markieren =>A2
.FormatConditions.Delete 'Zuerst alle Bedingungen löschen
.FormatConditions.Add Type:=xlExpression, _
Formula1:=[B2].FormulaLocal 'Hier die regionalisierte Version auslesen
.FormatConditions(1).Interior.ColorIndex = 40
End With
[B2].ClearContents 'Inhalt der temp. Zelle B2 wieder löschen
End Sub
Das funktioniert zwar einwandfrei, erscheint mir jedoch ziemlich unprofessionell !Kennt jemand eine elegantere Möglichkeit, eine Funktion sprachenunabhängig (also : englisch) in der Bedingten Formatierung per VBA zu verwenden ?
Vielen Dank für eure Unterstützung,
Gruß NoNet