Ваша проблема здесь: If Len(Tmp) Then
, и это просто проверка, имеет ли Tmp
какую-либо длину. Так что это фактически игнорирует ваши пустые клетки, пропуская их. Вместо этого вы выбираете ячейки со значениями в них.
Не делайте l oop всех ячеек в диапазоне. Вместо этого просто посмотрите на эти пустые клетки, представляющие интерес. Например:
Sub Testing()
Dim LR As Long, LC as Long
Dim rng As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ws
LR = .Cells(.Rows.Count, "A").End(xlUp).Row
LC = .Cells(LR, .Columns.Count).End(xlToLeft).Column
Set rng = .Range(.Cells(1, 1), .Cells(LR, LC))
If WorksheetFunction.CountBlank(rng) > 0 Then
For Each area In rng.SpecialCells(xlCellTypeBlanks).Areas
area.Offset(-1).Resize(area.Rows.Count + 1).FillDown
Next
End If
End With
End Sub
Как видите, я пропустил .Select
и ActiveSheet
, так как это плохое кодирование и обычно вообще не нужно.