EDIT: В соответствии с комментариями, это правильный код:
Простой End(xlDown)
подход
Sub GetCellCount()
With ThisWorkbook.Sheets("Sheet1") 'Modify as necessary.
Set HeadC = .Range("A4")
CellCt = HeadC.End(xlDown).Row - HeadC.Row
MsgBox CellCt
End With
End Sub
Результат:
Дайте нам знать, если го это помогает.
EDIT2: Не устраивает вышеуказанное, поскольку простой подход End(xlDown)
может представлять потенциальные проблемы в будущем. Другие подходы ниже.
Проверка пустых ячеек приближается
Sub GetCellCountv2()
With ThisWorkbook.Sheets("Sheet1") 'Modify as necessary.
CellCt = 0
Set HeadC = .Range("A4") 'Modify as necessary.
For Iter = HeadC.Row + 1 To .Rows.Count
If Not IsEmpty(.Cells(Iter, HeadC.Column)) Then
CellCt = CellCt + 1
Else
Exit For
End If
Next Iter
MsgBox CellCt
End With
End Sub
длиной Проверки струнного подхода
Sub GetCellCountv3()
With ThisWorkbook.Sheets("Sheet1") 'Modify as necessary.
CellCt = 0
Set HeadC = .Range("A4") 'Modify as necessary.
For Iter = HeadC.Row + 1 To .Rows.Count
If Len(.Cells(Iter, HeadC.Column).Value) > 0 Then
CellCt = CellCt + 1
Else
Exit For
End If
Next Iter
MsgBox CellCt
End With
End Sub
Надеется, что это может решить несколько потенциальных проблемы с просьбой.
Что вы * вы * пробовали? '= COUNTA (...)' формула может сделать это, без излишеств. – Manhattan
Что вы имеете в виду, я попробовал lastRow = .Cells (.Rows.Count, «A4»). End (xlUp) .Но только хочу отсчитывать от a4, пока не будет ничего ниже, я не хочу, чтобы он считал все в A \ –
L = CountA («A4»). Конец (xlDown) будет что-то вроде этой работы –