我正在建立一个包含许多行的交互式甘特图(这就是为什么我使用VBA的原因),并且在格式化单元格时遇到了麻烦。基本上,我只希望单元格具有基于AND公式的颜色。该公式引用了其他单元格,因此格式不是基于单元格自身的值。棘手的部分是我的公式需要根据其循环通过的特定行进行更改。我设法建立了可以正确遍历每一行的代码,但是我也无法改变公式。现在,我的代码在我的with-expression的公式部分给了我一个语法错误。希望大家能帮忙!
我发现问题可能在于连接技巧可能不适用于带语句。但是我不知道如何以其他方式进行格式化。
Public Sub FormatTest()
Dim Sheet As Object
Dim Area As Range, r As Range
Dim i As Integer
Set Area = Sheets("Styregruppe - Tester").Range("H11:BK58")
For Each r In Area.Rows
For i = 11 To 58
With r.FormatConditions
.Delete
With .Add(Type:=xlExpression, Formula1:="=OG(("C" & i)<=H8;("D" & i)>=H8)")
.Interior.Color = RGB(0, 176, 240)
.StopIfTrue = False
End With
End With
Next i
Next r
End Sub
这行: .Add(Type:=xlExpression, Formula1:="=OG(("C" & i)<=H8;("D" & i)>=H8)")
如果您使用了不正确的引号,则您将C排除在引号之外,因此它会认为C是变量,并且“&”号位于引号内,因此被解释为字符串字符而不是串联字符。
您想要类似的东西: .Add(Type:=xlExpression, Formula1:="=OG((C" & i & ")<=H8;(D" &
i & ")>=H8)")
谢谢!它现在正在工作:)但是我认为我的循环是错误的。它一直只为我的公式写“ 58”。你知道为什么吗?我希望它的计数范围从11到58,所以公式从11到58循环遍历每一行
我认为是因为您有两个看起来在做相同事情的循环,这是对外部循环进行迭代,使您获得想要的行,然后为每个外部循环迭代将i 11循环到58。这意味着您总是只剩下58,因为那是它处理的最后一个。
谢谢Warcupine!我现在开始工作了:)