2013-02-09 30 views
2

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

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

我得到运行时错误1004谁能告诉我什么错?

在此先感谢。 PS:rownum是整数变量,年份是字符串变量。这两个变量都已在代码的上述部分之前的代码中正确更新了

回答

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

谢谢!! 。它的工作.. – Sanket 2013-02-10 03:52:10

0

最好的方式,如果选择在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 
+0

它在'Selection.Cells'中给出错误。 – 2014-08-08 20:05:29