gpt4 book ai didi

vba - "if not instr"无法像我想象的那样在 vba 中工作

转载 作者:行者123 更新时间:2023-12-02 07:21:31 25 4
gpt4 key购买 nike

我有一张包含契约(Contract)列表的表,其中一栏为供应商名称,一栏为结束日期,我想要做的是将所有过去的日期设为红色,除非契约(Contract)来自特定供应商。我之前使用 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

预计它会对供应商名称中没有“flowserve”的契约(Contract)的通过日期进行着色。但相反,它似乎只是给所有传递的日期着色,就好像 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

这按照我想要的方式工作,所以我猜测 Not 并不像我想象的那样工作。

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

先谢谢大家了!

最佳答案

https://msdn.microsoft.com/en-us/library/8460tsh1%28v=vs.90%29.aspx

InStr 返回一个整数而不是 bool 值,请尝试将其与它返回的值进行比较。

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

关于vba - "if not instr"无法像我想象的那样在 vba 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com