【问题标题】:VBA Return message if cell(s) in range are blank如果范围内的单元格为空白,则 VBA 返回消息
【发布时间】:2016-04-01 17:52:01
【问题描述】:

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

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

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

非常感谢

【问题讨论】:

  • 分享您遇到的错误会很有帮助。在这种情况下,可能是“类型不匹配”
  • 请不要使用ActiveheetUsedrange 甚至对单元格进行硬编码以找到最后一行。您可能希望看到THIS 也避免使用.Select。你可能想看看THIS

标签: vba excel range


【解决方案1】:

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

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

.select 方法返回一个 TRUEFALSE 值,因此您在尝试将 Set OrderRngTRUE 相匹配时会出现类型不匹配,这是一个布尔值,而不是一个范围。

此外,这里 100% 没有理由 select,您的代码应该可以继续正常运行。

【讨论】:

  • 非常感谢您的快速回复,我不喜欢不使用 .select 这样做我可以看到选择的范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2019-10-20
  • 1970-01-01
  • 2018-02-19
相关资源
最近更新 更多