Следующая строка кода вставки одной строки в месте 12 строк ниже HHRw:
HHRw.Offset(12, 0).EntireRow.Insert
чтобы вставить 12 строк, необходимо объявить диапазон 12 строк:
Range(HHRw.Offset(1).Address & ":" & HHRw.Offset(12).Address).EntireRow.Insert
Имейте в виду, что цикл For петли из строк с 1 по 2251. Когда вы находите дату и вставляете 12 строк, вы затем нажимаете весь контент ниже места пасты вниз на 12 строк. Когда вы достигнете строки 2251st, у вас может быть значительное количество контента за пределами этой строки, и этот контент не будет проверяться вашим циклом For.
Один из способов вы можете идти о решении это повторно проверить на последнюю использованную строку и превратить петлю в Do While:
Sub RowInserter()
Dim LastRow As Integer, LoopCounter As Integer
Dim TestCell As Range
LoopCounter = 1
LastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Do While LoopCounter <= LastRow
Set TestCell = Range("A" & LoopCounter)
If IsDate(TestCell.Value) Then
If DateValue(TestCell.Value) = DateValue("30-Sep-2017") Then
Range(TestCell.Offset(1).Address & ":" & TestCell.Offset(12).Address).EntireRow.Insert
LoopCounter = LoopCounter + 13
Else
LoopCounter = LoopCounter + 1
End If
Else
LoopCounter = LoopCounter + 1
End If
LastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Loop
End Sub
ничего не произошло, когда я с поправками в соответствии с вашим посоветуйте – user3287522
у меня есть отредактировал код выше, используя функцию IsDate. – DGulledge
Не работает sythex error – user3287522