Reputation: 5443
i want to use the follow vba code in my application
.FormatConditions.Add Type:=xlExpression, Formula1:="=Mod(Column(), 2)"
I'm getting an error
Error Number 5. Invalid Argument
What is wrong with that code? THX
This is my complete code in my sub.. all FomatConditions are working fine - except the last two..
' FormatConditions
With Range("K6:BH" & lastUsedRow)
.FormatConditions.Delete
' Prozent
.FormatConditions.Add Type:=xlExpression, Formula1:="=Prozent"
.FormatConditions(1).StopIfTrue = False
.FormatConditions(1).Interior.Pattern = xlNone
.FormatConditions(1).Interior.Color = RGB(174, 170, 170)
With .FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.ColorIndex = 2
.Weight = xlThin
End With
' Prozent unter
.FormatConditions.Add Type:=xlExpression, Formula1:="=ProzentUnter"
.FormatConditions(2).StopIfTrue = False
.FormatConditions(2).Interior.Color = RGB(255, 192, 0)
With .FormatConditions(2).Borders(xlBottom)
.LineStyle = xlContinuous
.ColorIndex = 2
.Weight = xlThin
End With
' ist
.FormatConditions.Add Type:=xlExpression, Formula1:="=Ist"
.FormatConditions(3).StopIfTrue = False
.FormatConditions(3).Interior.Color = RGB(208, 206, 206)
.FormatConditions(3).Interior.Pattern = xlLightUp
.FormatConditions(3).Interior.PatternColor = RGB(68, 84, 106)
With .FormatConditions(3).Borders(xlBottom)
.LineStyle = xlContinuous
.ColorIndex = 2
.Weight = xlThin
End With
' ist unter
.FormatConditions.Add Type:=xlExpression, Formula1:="=IstUnter"
.FormatConditions(4).StopIfTrue = False
.FormatConditions(4).Interior.Color = RGB(255, 192, 0)
.FormatConditions(4).Interior.Pattern = xlLightUp
.FormatConditions(4).Interior.PatternColor = RGB(68, 84, 106)
With .FormatConditions(4).Borders(xlBottom)
.LineStyle = xlContinuous
.ColorIndex = 2
.Weight = xlThin
End With
' Plan
.FormatConditions.Add Type:=xlExpression, Formula1:="=Planen"
.FormatConditions(5).StopIfTrue = False
.FormatConditions(5).Interior.Color = RGB(255, 255, 255)
.FormatConditions(5).Interior.Pattern = xlLightUp
.FormatConditions(5).Interior.PatternColor = RGB(68, 84, 106)
With .FormatConditions(5).Borders(xlBottom)
.LineStyle = xlContinuous
.ColorIndex = 2
.Weight = xlThin
End With
' timee
.FormatConditions.Add Type:=xlExpression, Formula1:="=K$5=$F$1"
.FormatConditions(6).StopIfTrue = False
.FormatConditions(6).Interior.Color = RGB(198, 224, 180)
With .FormatConditions(6).Borders(xlLeft)
.LineStyle = xlContinuous
.Color = RGB(209, 136, 27)
.Weight = xlThin
End With
With .FormatConditions(6).Borders(xlRight)
.LineStyle = xlContinuous
.Color = RGB(209, 136, 27)
.Weight = xlThin
End With
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(COLUMN(), 2)"
.FormatConditions(7).Interior.Color = RGB(242, 242, 242)
'.FormatConditions.Add Type:=xlExpression, Formula1:="=Mod(Column(), 2)=0"
'.FormatConditions(8).Interior.Color = RGB(255, 255, 255)
End With
Upvotes: 3
Views: 7234
Reputation: 191
A very good answer has already been posted but as a complement:
Use Application.International(xlListSeparator)
.
Dim sep As String: sep = Application.International(xlListSeparator)
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(COLUMN()" & sep & "2)"
This should work no matter the regional settings.
Upvotes: 1
Reputation: 19067
The reason are regional settings on your computer. Instead of comma
you should use semicolon
to separate formula arguments. Therefore instead of this line:
.FormatConditions.Add Type:=xlExpression, Formula1:="=Mod(Column(), 2)"
use this one:
.FormatConditions.Add Type:=xlExpression, Formula1:="=Mod(Column(); 2)"
Or you could change your regional settings alternatively.
Upvotes: 6