[英]excel VBA Type Mismatch in if
我的代码的一部分是
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变量,但是我不确定将其设置为什么,有人可以帮忙吗?
谢谢。
如果Target
和Accnumber
之间的Intersect()
大于一个单元格,则您正在将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
的文本以及您正在比较""
的事实中猜测的结果,因为您希望访问Range
类的默认Value
属性,只有在Range
为单个时才可以执行此操作) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.