Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bedingte Formatierung - ungültiges Argument?

Bedingte Formatierung - ungültiges Argument?
17.03.2008 22:25:20
Peter

Guten Abend
Ich möchte dem Bereich "_A" (bezieht sich auf: =CW!$L$2:$L$180)
eine bedingte Formatierung mittels VBA-Code zuweisen.
manuelle Eingabe im Excel klappt:
bedingte Formatierung in Zelle L2 (dort beginnt auch der benannte Bereich "_A"
=ODER(UND(LINKS(G2)="C";L2>0);UND(LINKS(G2)="D";L2<0))
VBA-Code klemmt
....
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(RC[-5])=""C"",RC>0),AND(LEFT(RC[-5])=""D"",RC<0))"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22
....
Wenn ich den Code schrittweise (F8) abarbeite stopp der Code bei der ersten Zeile
Range("_A").FormatConditions.Add Type:= ....
und gibt die Meldung:
Laufzeitfehler '5':
Ungültiger Prozeduraufruf oder ungültiges Argument
Wenn ich stattdessen
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:="=ZS53"
einsetze, läuft alles prima. Daher gehe ich davon aus, dass irgend ein Argument nicht ganz o.k. ist.
Kann mir jemand verraten, was ich falsch mache? In Spalte L sind Zahlen enthalten, in Spalte G die Buchstaben D oder C oder ausgeschrieben Debit oder Credit.
Vielen Dank, Peter

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
17.03.2008 22:43:37
Ramses
Hallo
Du trägst eine Formel ein, die nicht konvertiert wird.
So geht es
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22
Gruss Rainer

AW: Bedingte Formatierung - ungültiges Argument?
17.03.2008 23:09:31
Renee
Hi zusammen,
Korrigiert mich, aber wenn ich mich nicht irre, ist hier ein .Select unabdingbar.


Range("_A").Cells(1, 1).Select
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2;1)=""C"";L2>0);AND(LEFT(G2;1)=""D"";L2<0))"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22


GreetZ Renée

Anzeige
Korrektur hiermit erklärt: Nicht nötig :-) o.w.T.
17.03.2008 23:17:39
Ramses
...

AW: Korrektur hiermit erklärt: Nicht nötig :-) o.w
17.03.2008 23:26:38
Renee
Hi Rainer,
Bist du sicher ?
Wenn ich deinen Code anwende und die Activecell ist z.B. A1, ergibt das Resultat in der bedingten Formatierung in L2 (der ersten Zelle des benannten Bereichs):


=OR(AND(LEFT(R3)="C";W3>0);AND(LEFT(R3)="D";W3<0))


Exel 2000 Pro. SP3 :-(
GreetZ Renée

Schon richtig....
17.03.2008 23:33:05
Ramses
Hallo Renee
Ich hatte mich bloss auf deine Aussage "..., ist hier ein .Select unabdingbar...." bezogen.
With Range("_A")
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
.FormatConditions(1).Interior.ColorIndex = 22
End With
Dann geht es nämlich auch ohne Select :-)
Gruss Rainer

Anzeige
AW: Jetzt verstehen wir uns...
17.03.2008 23:37:00
Renee
,denn ich hab mich auf den Code des Anfragers bezogen.
Wenn 2 sich gut verstehen, haben sie ewig Arbeit...oder
Wie soll ich wissen, was ich denke, bevor ich höre, was ich sehe ?
Schönen Abend noch, Renée

AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 07:06:15
Peter
Guten Tag Rainer
Wenn ich
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22
als Code verwende, steht in L2 dann:
=OR(AND(LEFT(HL65522)="C";HQ65522>0);AND(LEFT(HL65522)="D";HQ65522<0))
wohl weil Range ("_A") nicht nur Zelle L2 betrifft sondern den Bereich L2:L180. Hier müsste jedoch immer auf Zeile 2 referenziert werden (und bei der Formel in Zeile 3 auf Zeile 3, etc.)
Deshalb versuchte ich die Schreibweise mit RC, die zeilen-unabhängig funktionieren sollte.
Wie kann ich das Problem lösen?
Gruss, Peter

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 08:38:06
Renee
Hi Peter,
Lies den Thread mal vollständig. Benutze die von Rainer vorgeschlagene With-Methode und deine Formeln werden automatisch für den Bereich angepasst. RC-Formate sind in der bed. Formatierung nicht anwendbar!
GreetZ Renée

AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 10:45:58
Peter
Hallo Renée
Das hatte ich bereits probiert. Das Problem ist, dass die bedingte Formatierung nur dann richtig definiert wird, wenn L2 die aktive Zelle ist. Und sonst passiert auch genau das, was ich im vorigen Thread beschrieben habe. Was dann heissen würde, dass ich tatsächlich zuerst L2 selektieren müsste.
Zudem funktionieren zumindest einfache RC-Formate in der bedingten Formatierung wie
Range("_V").FormatConditions.Add Type:=xlExpression, Formula1:="=ZS54"
Range("_V").FormatConditions(1).Interior.ColorIndex = 22
In ZS54 steht hier entweder WAHR oder FALSCH
Wenn es eine Lösung ohne Selektieren gäbe, wäre das natürlich super.
Gruss, Peter

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 11:08:16
Renee
Hi Peter,
So wie Rainer es vorgeschlagen hat, funktionierts ohne Select:


With Range("_A")
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
.FormatConditions(1).Interior.ColorIndex = 22
End With


GreetZ Renée

AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 11:21:11
Peter
Hallo Reneé
Wie die Beispielmappe zeigt, beziehen sich die Formeln der bedingten Formatierung nur, wenn der Cursor vor dem Verlassen der Tabelle "cw" auf Zelle L2 steht.
https://www.herber.de/bbs/user/50808.xls
Gruss, Peter

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 13:07:57
Renee
Hi Peter,
Leider geht's doch nicht ohne Select:


Sub Bereichsnamen()
Dim lngSpa As Long, lngAnf As Long, lngEnd As Long, lngSpaEnd As Long, lngDef As Long
Dim i As Integer
Dim Bereich As Range
Dim strNameAlt As String, strNameNeu As String
Dim lngB As Long, lngC As Long, lngV As Long
''lngDef = 1 'vorgesehene Namen in Zeile 1
''lngAnf = 2  'Bereiche beginnen bei Zeile 2
''lngSpa = 2  'Spalte B ist relevant zur Bestimmung der letzten Zeile
''lngEnd = Me.Cells(65536, lngSpa).End(xlUp).Row           'ermittelt letzten Eintrag in Spalte  _
B
''lngSpaEnd = Me.Cells(lngDef, 256).End(xlToLeft).Column
Dim tActAdr As String
Application.ScreenUpdating = False
tActAdr = ActiveCell.Address
ActiveSheet.Range("_A").FormatConditions.Delete
ActiveSheet.Range("_A").Cells(1, 1).Select
ActiveSheet.Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
ActiveSheet.Range("_A").FormatConditions(1).Interior.ColorIndex = 22
ActiveSheet.Range(tActAdr).Select
Application.ScreenUpdating = True
End Sub


GreetZ Renée

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 14:56:32
Peter
Hallo Renée
Vielen Dank. Da der Range "_A" nicht im ActiveSheet ist, musste ich bei der Selection etwas ändern. Jetzt funktioniert es grundsätzlich, allerdings arbeite ich mit einem deutschen Excel. Gibt es eine Möglichkeit, dass der Code Sprachunabhängig ist, das heisst, dass der Code hier automatisch auf deutsch eingetragen wird?
Gruss, Peter
Application.ScreenUpdating = False
tActAdr = ActiveCell.Address
Sheets("CW").Select
Range("_A").Select
Range("_A").FormatConditions.Delete
ActiveSheet.Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22
Range(tActAdr).Select
Application.ScreenUpdating = True

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 16:53:41
Renee
Hi Peter,
Excel-VBA versteht nur Englisch. Wenn du aber nach dem Lauf des Makros in deine bedingte Formatierung schaust, wirst du dort deine Formel in Deutsch finden. Auch mit einem deutschen Excel ist es leicht die das englische Äquivalent für eine Formel zu finden. Schreib die deutsche Formel in eine Zelle, nicht als bedingte Formatierung, sondern als simple Excel-Formel (z.b. A1) und dann gibst du im Direktfenster des VBE dies hier ein und du siehst die englische Formel, die in der Zelle hinterlegt ist:


?Activesheet.Range("A1").Formula


GreetZ Renée

Anzeige
AW: Bedingte Formatierung - ungültiges Argument?
18.03.2008 17:13:57
Peter
Halle Renée
Bei mir wurde aber diese Zeile nicht "automatisch" übersetzt sondern es steht die Formel genauso wie sie im Code in " " enthalten ist.
Gruss, Peter
ActiveSheet.Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(AND(LEFT(G2)=""C"";L2>0);AND(LEFT(G2)=""D"";L2<0))"

sorry, no more comment (owT)
18.03.2008 19:50:00
Renee

AW: sorry, no more comment (owT)
19.03.2008 07:54:34
Peter
Hallo Renée
Trotzdem dankeschön für die verschiedenen Hinweise. Als vorläufiges Endergebnis ergibt sich für mich, dass bedingte Formatierungen mit etwas komplexeren Formeln nicht so auf benannte Bereiche angewandt werden können, dass diese gleichzeitig in einem deutschen, französischen oder englischen Excel laufen. Als Ausweg belasse ich nun die Auswertung der Bedingung in einer separaten Spalte (bei mir im Bereich "_ATF") und übernehme dann den Wahrheitswert in die bedingte Formatierung im Range("_A").
Range("_ATF").FormulaR1C1 = "=OR(AND(LEFT(_Cx)=""C"",RC[2]>0),AND(LEFT(_Cx)=""D"",RC[2]<0))"
Range("_A").FormatConditions.Add Type:=xlExpression, Formula1:="=ZS53"
Range("_A").FormatConditions(1).Interior.ColorIndex = 22
Gruss, Peter

Anzeige

180 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige