Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bedingte Formatierung Deutsch/Englisch

Bedingte Formatierung Deutsch/Englisch
21.12.2007 12:28:32
Thomas
Liebe Gemeinde ;o)
ich habe folgendes Problem: per VBA wird für eine Spalte eine bedingte Formatierung gesetzt. Die Zellen, die einen Eintrag haben, der in der Spalte bereits vorkommt, sollen z.B. rot werden.
Das geht wunderbar, wenn man unter "Bedingte Formatierung-Formel" folgende Formel eingibt:

=ZÄHLENWENN(A:A;A2)>1


bzw. per VBA:


Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:="=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"


Nun kommt das Problem: ich öffne die Datei in einer englischen Excel-Version und starte das Makro. Die bedingte Formatierung greift hier nicht, da "Zählenwenn" hier unbekannt ist, ebenso wie "CountIf" in der deutschen version unbekannt ist.
Weiß jemand Rat, wie ich mein Makro abändern muss, dass es in beiden Excel-Versionen funktioniert?
Vielen Dank schon mal,
Thomas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:13:10
Daniel
Hi
das könnt im Prinzip so funktionieren:

Sub Makro1()
Dim strFormel As String
If True Then '--- hier muss die Prüfung auf die Sprachversion rein
strFormel "=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"
Else
strFormel = "=AND(B1"""",COUNTIF(B:B,B1)1)"
End If
Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:=strFormel
End Sub


wobei ich noch nicht weiß, wie eine clevere Lösung zur Sprachprüfung ausssieht.
das einzige, was mir so spontan einfällt, wäre, das du von einer Zelle mit bekannter Formel die .FormulaLocal-Eingenschaft abfragt (die müsste sich ja mit der Sprachversion ändern, also


if Range("x100").formulalocal like "=SummeWenn(*" then strFormel = Deutsche Formel
if Range("x100").formulalocal like "=CountIf(*" then strFormel = Englische Formel


also so in etwa. leider kann ich es bei mir nicht testen.
Gruß, Daniel

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:22:00
Hajo_Zi
Hallo Daniel,
mal ein Vorschlag von Nepumuk auf den man aufbauen kann.
lege Zwei Tabellen an "Deutsch" und "Englisch"
Option Explicit

Private Sub Workbook_Open()
Worksheets(IIf(Application.International(xlCountrySetting) = 49, "Deutsch", "Englisch")). _
Visible = -1
Worksheets(IIf(Application.International(xlCountrySetting) = 49, "Englisch", "Deutsch")). _
Visible = 2
End Sub


Von Nepumuk

AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:54:19
Thomas
Hallo Daniel, hallo Hajo,
danke für eure Vorschläge. Mit IIF habe ich wieder etwas dazugelernt (danke!), aber das mit dem International zeigt leider keinen Unterschied bei beiden Versionen. Wieso auch immer, ich erhalte immer die 49, also Deutschland.
Bin also noch weiter am rumbasteln bze. für weitere Ideen offen.
Gruß,
Thomas

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 14:07:00
IngGi
Hallo Thomas,
an Stelle der Formel für die Wahrheitsprüfung kannst du auch das Ergebnis der Wahrheitsprüfung (0 für FALSCH bzw. 1 für WAHR) in die bedingte Formatierung reinschreiben. Das Ergebnis ermittelst du dann in VBA per WorksheetFunction. Damit spielt dann die Sprachversion der Excelanwendung keine Rolle mehr, denn VBA spricht ja unabhängig davon immer englisch.
Statt

Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:="=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"


müsste es dann heißen:


Columns("B:B").FormatConditions.Add Type:=xlExpression, _
Formula1:=-(CInt(Range("B1")  "")) * _
CInt(Application.WorksheetFunction.CountIf(Range("B:B"), Range("B1")))


Gruß Ingolf

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 14:25:00
Thomas
Hallo Ingolf,
erst war ich euphorisch, das hörte sich sehr gut an. Aber dann steht natürlich in der bedingten Formatierung immer der feste Wert drin, auch wenn sich der Wert in der Spalte nun ändert. Es ist also in dem Sinne keine bedingte Formatierung mehr, jedenfalls keine, die vom Wert anderer Zellen abhängt.
Gut, man könnte das jetzt verpacken in "WorksheetChange", aber das wird mir insgesamt zu aufwendig.
Bin also am Weiterbasteln.
Danke und Gruß,
Thomas

AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 15:00:00
IngGi
Hallo Thomas,
eine Möglichkeit fällt mir noch ein. Schreib die englische Formel über die .Formula-Eigenschaft in eine Dummyzelle und lies die Formel von dort über die .FormulaLocal-Eigenschaft wieder aus.

Range("A1").Formula="=AND(B1"""",COUNTIF(B:B,B1)1)"
Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:=Range("A1").FormulaLocal
Range("A1").ClearContents

Gruß Ingolf

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 15:17:00
Thomas
Hallo Ingolf,
danke, das ist ein guter Ansatz, auch wenn es noch nicht so ganz klappt (die Verweise stimmen noch nicht richtig). Aber wenigstens ist dadurch die Formel schon mal drin!!
Gruß und vielen Dank für deine Zeit und Mühe,
Thomas :o)

AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 16:24:40
Daniel
Hi
hier schlägt der Unterschied zwischen Relativem und absolutem Zellbezug gnadenlos zu:
wenn du in Zelle A1 die Formel "=B1" reinschreibst, bedeutet das nicht:
hol mir den Zellwert aus B1 , sondern, hole den Wert aus der Zelle rechts neben mir.
wenn du das nach dieser Methode machst , dann muss die Formel in A1 entsprechend Heißen:

Range("A1").Formula="=AND(A1"""",COUNTIF(A:A,A1)1)" 


oder es muss absolut gesetzt werden:


Range("A1").Formula="=AND($B1"""",COUNTIF($B:$B,$B1)1)"


Gruß, Daniel

Anzeige

78 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige