繁体   English   中英

Excel中的VBA类型不匹配

[英]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变量,但是我不确定将其设置为什么,有人可以帮忙吗?

谢谢。

如果TargetAccnumber之间的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM