温馨提示:本文翻译自stackoverflow.com,查看原文请点击:excel - How do I write an WITH statement that loops through rows within the WITH-formula?
excel vba

excel - 如何编写WITH语句,循环遍历WITH公式中的行?

发布于 2020-03-27 11:18:00

我正在建立一个包含许多行的交互式甘特图(这就是为什么我使用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

查看更多

查看更多

提问者
Christina
被浏览
195
Warcupine 2019-07-03 22:42

这行: .Add(Type:=xlExpression, Formula1:="=OG(("C" & i)<=H8;("D" & i)>=H8)")

如果您使用了不正确的引号,则您将C排除在引号之外,因此它会认为C是变量,并且“&”号位于引号内,因此被解释为字符串字符而不是串联字符。

您想要类似的东西: .Add(Type:=xlExpression, Formula1:="=OG((C" & i & ")<=H8;(D" & i & ")>=H8)")