小编Ski*_*ck3的帖子

“如果不是instr”不起作用,我认为应该在vba中

我有一张包含合同清单的工作表,其中一列是供应商名称,一列是截止日期,除非合同是来自特定的供应商,否则我想将所有经过的日期设为红色。我以前曾经InStr检查过一个单元格内是否有一个字符串,所以由于我刚从vba开始,所以我想在循环中插入以下内容

If Not InStr(LCase(Data.Cells(i, 4).Value), "flowserve") Then
    If CDate(Data.Cells(i, "h").Value) < Date Then _
        Data.Cells(i, "h").Font.Color = -16776961
End If
Run Code Online (Sandbox Code Playgroud)

期望它将为供应商名称中没有“ flowserve”的合同的通过日期着色。但是相反,它似乎只是给所有通过的日期加上颜色,好像在InStr任何地方都找不到。

然后我尝试做

If InStr(LCase(Data.Cells(i, 4).Value), "flowserve") Then
    'do nothing
Else
    If CDate(Data.Cells(i, "h").Value) < Date Then _
        Data.Cells(i, "h").Font.Color = -16776961
End If
Run Code Online (Sandbox Code Playgroud)

而且它可以按我的意愿工作,所以我猜测Not不能按照我的想法工作。

现在,即使我有一个解决方案,我也希望有人可以解释第一个代码中出了什么问题。希望我足够清楚。

预先感谢大家!

excel vba excel-vba

5
推荐指数
1
解决办法
6313
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1