如果范围中的单元格为空,则返回VBA消息

如果范围中的单元格为空,则返回VBA消息,vba,excel,range,Vba,Excel,Range,如果给定范围内的任何单元格为空,我将尝试返回一条消息。如果我声明范围,即 Set OrderRng = [C1: C41] 它很好用,但如果我宣布它是这样的话 Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536"). End(xlUp).Address).Select` 它不起作用 我知道第二个参数范围声明正确,因为它总是突出显示正确的单元格 我的整个代码如下所示 > Sub BlankCell() Dim OrderR

如果给定范围内的任何单元格为空,我将尝试返回一条消息。如果我声明范围,即

Set OrderRng = [C1: C41]
它很好用,但如果我宣布它是这样的话

Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536"). End(xlUp).Address).Select`
它不起作用

我知道第二个参数范围声明正确,因为它总是突出显示正确的单元格

我的整个代码如下所示

> Sub BlankCell() Dim OrderRng As Range On Error Resume Next
> 
>     Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536").End(xlUp).Address).Select
> 
> ' Set OrderRng = [C1: C41]  ' Rm'd for testing
> 
>   Set OrderRng = OrderRng.SpecialCells(xlCellTypeBlanks)
> 
> If Err = 0 Then MsgBox "An Order ID is missing on one of your entries,
> please amend then try again" End If End Sub
我做错了什么,我知道这是显而易见的,但对我来说不是


非常感谢

要修复此问题,只需删除
。从范围变量设置行的末尾选择

Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536").End(xlUp).Address)
.select
方法返回一个
TRUE
FALSE
值,因此如果试图
将OrderRng
设置为
TRUE
,则会出现类型不匹配,这是一个布尔值,而不是一个范围


此外,100%没有理由在此处选择
,您的代码将继续正常运行

分享你得到的错误会很有帮助。在这种情况下,可能是“类型不匹配”,请不要使用
Activeheet
Usedrange
或甚至硬编码单元格以查找最后一行。您可能还希望看到避免使用
。选择
。您可能希望看到非常感谢您的快速响应,我不喜欢不使用。选择通过这样做,我可以看到选择的范围。