excel中的VBA类型不匹配

时间:2015-04-24 14:11:18

标签: vba excel-vba excel

我的部分代码是

     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变量,但我不知道该设置为什么,有人可以帮忙吗?

感谢。

1 个答案:

答案 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为单个时才能执行此操作。