2

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

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

我收到运行时错误 1004。谁能告诉我的错误是什么?

提前致谢。PS:rownum 是整数变量,yearsheet 是字符串变量。在上述代码部分之前,这两个变量都已在代码中正确更新

4

2 回答 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
于 2013-02-09T19:57:51.693 回答
0

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

' 测试是否存在选定的单元格。
' @return 真或假
函数 isCellSelection() 作为布尔值
    Dim r As 范围
    isCellSelection = 假
    设置 r = Selection.Cells
    如果 IsEmpty(r) 则
        isCellSelection = 真
    万一
结束函数'isCellSelection
于 2013-10-21T07:13:31.670 回答