У меня есть следующий макрос, который вставляет строки в лист.После вставки строк по указанным начальным адресам различные диапазоны затем преобразуются в таблицы.Мои первые мысли заключаются в том, что проблема заключается в использовании xlDown
- поскольку это место в коде, куда вставляются строки.
В настоящее время у меня есть 7 таких диапазонов, однако проблема в том, что первые три всегдавставили дополнительную строку - раньше это работало без проблем, так что тот факт, что он плохо себя ведет, для меня загадка.
Остальные диапазоны верны.tableStartAdress
относится к именованным диапазонам, значения которых соответствуют первой ячейке под зеленым заголовком, то есть A4, A12 и т. Д. rowsToInsert
для этого примера всегда равно 38.
Sub InsertTableRows(tableStartAdress As String, rowsToInsert As Integer)
Dim i As Integer
Dim rowToCopy As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayAlerts = False
Range(tableStartAdress).Offset(1, 0).Rows.Copy
rowToCopy = Range(tableStartAdress).Offset(1, 0).row & ":" & _
Range(tableStartAdress).Offset(1, 0).row
Rows(rowToCopy).Select
Selection.Copy
Range(tableStartAdress).Offset(1, 0).Select
ActiveCell.Resize(rowsToInsert, 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
На следующих рисунках показано, чтоЯ имею в виду.
До:
.
После заполнения данных первые три диапазона / таблицы имеют дополнительную строку
, ,
В то время как остальные значения верны