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

时间:2016-03-23 13:42:13

标签: excel vba excel-vba range

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

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

我做错了什么,我知道这很明显,但不是我。

非常感谢

1 个答案:

答案 0 :(得分:2)

要修复,只需从范围变量设置行的末尾删除.select

Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536").End(xlUp).Address)

.select方法会返回TRUEFALSE值,因此您最终会遇到尝试Set OrderRngTRUE的类型不匹配,这是一个布尔值,不是范围。

此外,100%没有理由select在这里,您的代码应继续保持良好状态。