带vlookup的Excel VBA条件格式:为什么我的参数会更改($B1到$B1048573)

带vlookup的Excel VBA条件格式:为什么我的参数会更改($B1到$B1048573),vba,excel,vlookup,Vba,Excel,Vlookup,我有点困惑,因为我找不到阻止excel改变的方法。。。 但让我们从头开始 我的宏有以下代码: ActiveWorkbook.Names.Add Name:="DBM", RefersToR1C1:= _ "='Sheet A'!C35:C39" With Worksheets("Sheet B").Range("$B:$B").FormatConditions _ .Add(Type:=xlExpression, Operator:=xlExpression, Formula1

我有点困惑,因为我找不到阻止excel改变的方法。。。 但让我们从头开始

我的宏有以下代码:

ActiveWorkbook.Names.Add Name:="DBM", RefersToR1C1:= _
    "='Sheet A'!C35:C39"

With Worksheets("Sheet B").Range("$B:$B").FormatConditions _
    .Add(Type:=xlExpression, Operator:=xlExpression, Formula1:="IF(ISBLANK(VLOOKUP($B1;DBM;5;FALSE));TRUE;FALSE)")
    With .Interior
        .ColorIndex = 3
    End With
End With
Worksheets("Sheet B").Range("$B:$B").FormatConditions(1) _
    .Modify Type:=xlExpression, Operator:=xlExpression, Formula:="IF(ISBLANK(VLOOKUP($B1;DBM;5;FALSE));TRUE;FALSE)")
这有点用,但不能完全满足我的需要。 它会自动将vlookup函数中的
$B1
参数更改为
$B1048573
- 这就是为什么格式化错误的行(背景色为红色)。如果我手动将其更改回
$B1
,它将是绝对正确的

因此,我尝试在我的宏中添加以下内容:

ActiveWorkbook.Names.Add Name:="DBM", RefersToR1C1:= _
    "='Sheet A'!C35:C39"

With Worksheets("Sheet B").Range("$B:$B").FormatConditions _
    .Add(Type:=xlExpression, Operator:=xlExpression, Formula1:="IF(ISBLANK(VLOOKUP($B1;DBM;5;FALSE));TRUE;FALSE)")
    With .Interior
        .ColorIndex = 3
    End With
End With
Worksheets("Sheet B").Range("$B:$B").FormatConditions(1) _
    .Modify Type:=xlExpression, Operator:=xlExpression, Formula:="IF(ISBLANK(VLOOKUP($B1;DBM;5;FALSE));TRUE;FALSE)")
不幸的是,它再次改变了(1048573美元)

有人知道怎么解决吗?或者每次使用宏时,我真的必须手动将其更改回去吗?

Rory的评论 首先选择B1

这几乎就是解决办法。 我只是想在这里加上这个,这样每个有同样问题的人都能马上找到答案


谢谢Rory。

您只想对范围(B:B)中符合某些条件的每个单元格执行此操作吗?谢谢Rory。这似乎太简单了:p这个修复方法有效:p