Ski*_*ck3 5 excel vba excel-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不能按照我的想法工作。
现在,即使我有一个解决方案,我也希望有人可以解释第一个代码中出了什么问题。希望我足够清楚。
预先感谢大家!
https://msdn.microsoft.com/zh-CN/library/8460tsh1%28v=vs.90%29.aspx
InStr返回的值不是布尔值,请尝试将其与返回的值进行比较。
If InStr(LCase(Data.Cells(i, 4).Value), "flowserve") = 0 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)
| 归档时间: |
|
| 查看次数: |
6313 次 |
| 最近记录: |