【发布时间】:2026-01-11 04:35:02
【问题描述】:
我有一个导入 Excel 的客户列表,有 4 列。我唯一感兴趣的是代表客户姓名的 Column1 和 Column4,它通过简单地说“Y”和“N”来指示他们是否有债务要偿还。我想写一个小函数,当某行的第四列显示“N”时,客户的姓名会以红色突出显示。如果它是“Y”,它将以绿色突出显示。一直写到现在
For i = 1 To 15
Dim pay = oSheet.Range("D" & i).Find(What:="Y")
If Not pay Is Nothing Then
oSheet.Range("A" & i).Interior.ColorIndex = 4
End If
Next
For i = 1 To 15
Dim pay = oSheet.Range("D" & i).Find(What:="N")
If pay Is Nothing Then
oSheet.Range("A" & i).Interior.ColorIndex = 3
End If
Next
我遇到的问题是,我的第二个 for 似乎基本上完全覆盖了第一个,并且只会改变我所有 15 行的颜色。第一个也将修改我的所有行,而不管相应列的内容如何。我在想我正在使用的代码行之一实际上搜索所有单元格,如果它有“Y”或“N”,而不是一个接一个。请大家帮我澄清一下我做错了什么?
【问题讨论】:
-
也许使用调试器并检查 'Dim pay = oSheet.Range("D" & i).Find(What:="N")' 返回的值。我不是 vba 专家,但您的代码看起来与网上找到的示例有点不同,所以也许只是重新检查一下? docs.microsoft.com/en-us/office/vba/api/excel.range.find
-
你不能这样做,
dim在一行中作为变量类型,然后在另一行中执行find。 -
这个问题怎么样?下面的答案是否解决了您的问题,如果是,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。