我的部分代码是
Set Accnumber = Range("B7:B26")
If Not Intersect(Target, Accnumber) Is Nothing Then
Application.EnableEvents = False
For Each rCell In Intersect(Target, Accnumber)
If Intersect(Target, Accnumber) = "" Then
MsgBox "Please enter account number"
rCell.Interior.Color = RGB(255, 0, 0)
Else
rCell.Interior.ColorIndex = 0
End If
Next
End If
第5行显示不匹配,我相信它是因为没有设置Accnumber变量,但我不知道该设置为什么,有人可以帮忙吗?
感谢。
答案 0 :(得分:1)
如果Intersect()
和Target
之间的Accnumber
超过了一个单元格,那么您需要将Range("A1:A5")
与""
进行比较,这显然正在提升类型不匹配(比较Range
类型再次String
)。
如果你的意思是“如果所有的单元格=”“”,那么你应该遍历它们中的每一个来定义它们是否都是空的:
allEmpty = True
For Each cell In Intersect(Target,Accnumber)
If cell <> "" Then
allEmpty = False
Exit For
End If
Next cell
因此,以Boolean
为基础执行测试。如果交叉点是单个范围或许多范围,这将起作用。
If allEmpty Then
MsgBox "Please enter account number"
rCell.Interior.Color = RGB(255, 0, 0)
End If
但是阅读你的代码并看到你没有想到这一点,那么我认为你应该修改Target
定义的方式,也许你想要控制用户选择的范围,因为它似乎是你期待的这个交集最多只有一个单元格(至少这是我从你MsgBox
的文本和你再次比较的事实""
,因为你希望访问默认的Value
Range
类的属性,只有当Range
为单个时才能执行此操作。