1

Я пытаюсь найти первую пустую ячейку столбца в таблице с этим кодом:

'Find next blank cell in results sheet
lLastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

'Paste results in the result sheet
.Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value

Проблема в том, что он находит только первую пустую ячейку после таблицы. Есть идеи, как заставить это работать внутри стола?

3 ответа3

1

.End также имеет параметры, отличные от xlUp так что вы можете начать сверху и опускаться вниз.

lLastRow = .Range("A1").End(xlDown).Row + 1

1

Попробуйте это:

Public Function IdentifyLastRowInBlock() As Long
  With Sheet1
    Dim lastRow As Long
    lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    Dim blankRow As Long
    blankRow = .Range(.Cells(3, 1), .Cells(lastRow, 1)).End(xlDown).Row + 1
  End With
  IdentifyLastRowInBlock = blankRow
End Function

Обратите внимание, что это вернет последнюю неиспользованную строку, начиная со строки 3. Не зная вашего кода, я просто жестко запрограммировал начальную точку - вам придется изменить это в соответствии с вашими обстоятельствами. На самом деле я бы рекомендовал сделать это параметром для функции, чтобы в будущем он был более гибким. Это также жестко запрограммировано для просмотра в столбце 1 ("A"), который также можно сделать параметром.

Также обратите внимание, что если в столбце 1 таблица окажется "полной", она найдет первую строку после таблицы. Отличная особенность таблиц заключается в том, что они автоматически расширяются, поэтому, если вы поместите значение в первую строку после существующей таблицы, Excel раскроет таблицу за вас.

0

Закончилось этим ведьмскими работами

При ошибке возобновить следующее lLastRow = Range("A29:A67").Find(What:= "", _ After:= Range("A29"), _ LookAt:= xlWhole, _ LookIn:= xlFormulas, _ SearchOrder:= xlByRows, _ SearchDirection:= xlNext, _ MatchCase:= False).Row On Error GoTo 0

            'Paste results in the result sheet
                .Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .