Как выполнить цикл, пока в обоих столбцах не будет пустой ячейки? - PullRequest
0 голосов
/ 16 октября 2019

Код ниже должен заполнять столбец AJ формулой = TODAY (), пока он не достигнет пустой ячейки в столбце B.

Работает, когда в AJ есть пустые ячейки (по сравнению с B), но когдаAJ заполнен, он продолжает цикл, и штампы в датах в ненужных строках в AJ (после того, как B пусто).

Я думал создать исключение, которое заранее проверяет, являются ли последние строки AJ и B пустыми. , если это правда, то пропустите цикл, но не смогли получить что-то с земли.

Sub DateStomper()

Do
    Application.ScreenUpdating = False
    Worksheets("xxx").Select
    Range("AJ2").End(xlDown).Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
Loop Until Range("AJ2").End(xlDown).Offset(1, 0).Row = Range("B2").End(xlDown).Offset(1, 0).Row

End Sub

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Другой подход. Вы можете ввести формулу без цикла, и использование xldown сомнительно, если у вас больше ничего нет в B.

Sub x()

Dim r As Long

On Error Resume Next 'in case there are no blanks
r = Range("B2", Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeBlanks)(1).Row
On Error GoTo 0

If r > 0 Then
    Range("AJ2:AJ" & r - 1).Formula = "=TODAY()"
Else
    MsgBox "No blanks in B"
End If

End Sub
0 голосов
/ 16 октября 2019

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

Sub DateStomper()
Dim i as Long

Application.ScreenUpdating = False

For i=2 to Range("B2").End(xlDown).Offset(1, 0).Row
    Range("AJ" & i).Formula = "=TODAY()"
Next i

End Sub

Просто проверьте, применяется ли формула в правильном положении. Мне не ясно, нужно ли вам подавать заявление в AJ2 -> AJ Last Item + 1.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...