2013-02-09 3 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 - целочисленная переменная, а yearheet - строковая переменная. обе эти переменные были правильно обновлены в коде перед предыдущим разделом кода

ответ

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

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'. –

Смежные вопросы