在vba模块中检查是否为空的范围。

问题描述 投票:2回答:2

我想检查用户模块中的一段代码中的excel范围是否为空,我使用了下面的代码。

Worksheets(yearsheet).Range("N" & rownum & ":DI").Select
If Application.WorksheetFunction.CountA(Selection) = 0 Then
    Exit Sub
End If

我得到了运行时错误1004。谁能告诉我的错误在哪里?

Thanks in advance.PS:rownum是整数变量,yearheet是字符串变量,这两个变量在上面的代码之前的代码中都是正确更新的。

excel-vba vba excel
2个回答
2
投票

"N" & rownum & ":DI" 并没有评估到一个真实的地址,因为它缺少了地址后半部分的行号。另外,你应该尽可能避免使用Select语句。

假设整个范围都在一行中,这就可以了。

Sub test()
Dim yearsheet As String
Dim rownum As Integer

yearsheet = "Sheet2"
rownum = 2
If Application.WorksheetFunction.CountA(Worksheets(yearsheet) _
        .Range("N" & rownum & ":DI" & rownum)) = 0 Then
    Exit Sub
End If
End Sub

0
投票

在VBA中测试选择区是否为空的最好方法是:

'测试单元格的选择是否存在。@return true or falseFunction isCellSelection() As Boolean Dim r As range isCellSelection = False Set r = Selection.Cells If IsEmpty(r) Then isCellSelection = True End IfEnd Function ' isCellSelection
© www.soinside.com 2019 - 2024. All rights reserved.