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

时间:2013-02-09 19:28:15

标签: excel-vba vba excel

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

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

我收到运行时错误1004.有人能说出我的错误吗?

提前致谢。 PS:rownum是整数变量,yearsheet是字符串变量。这些变量在代码的上一部分

之前的代码中正确更新

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

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

' Tests if a selection of cells exists.
' @return true or false
Function isCellSelection() As Boolean
    Dim r As range
    isCellSelection = False
    Set r = Selection.Cells
    If IsEmpty(r) Then
        isCellSelection = True
    End If
End Function ' isCellSelection