VBA CODE:
У меня есть ряд таблиц (по одной на лист), которые необходимо динамически увеличивать или уменьшать в размере на основе числа, введенного пользователем (на другом листе).
Каждая строка в каждой из таблиц должна поддерживать форматирование и формулы из приведенных выше строк, пока они «вставляются».
Я использовал приведенные ниже данные для успешного увеличения размера таблицы с правильным форматированием., но это только добавляет строки в таблицу ... и если кто-то нажимает кнопку макроса несколько раз, мы можем получить слишком много строк.Поэтому я хочу использовать динамическую таблицу, в которой строки определяются числом, и не имеет значения, был ли кто-то доволен кликом.
Я также предпринял еще одну попытку, которая увеличивает размер таблицы, ноон не вставляет дополнительные строки, поэтому таблица перекрывает данные, которые находятся в строках ниже определенной таблицы.Эта попытка также не копирует форматирование ... но это все, что у меня есть.Буду признателен за любую помощь, я работаю над этим пару месяцев и не могу найти подходящий ответ (после нескольких дней поиска).
Sub InsertNumberOfRows()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim NBOFROWS As Range
Dim wkb As Workbook
Set NBOFROWS = Worksheets("Rates").Range("K4")
Set wkb = Workbooks("POD Automation10.1")
With wkb
Set sh1 = ActiveWorkbook.Sheets("POD Cost Plan")
Set sh2 = ActiveWorkbook.Sheets("Development Calculator")
Set sh3 = ActiveWorkbook.Sheets("Calculator Calculations")
sh1.Select
Rows("10:10").Select
Selection.EntireRow.Offset(1).Resize(NBOFROWS.Value).Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
sh2.Select
Rows("10:10").Select
Selection.EntireRow.Offset(1).Resize(NBOFROWS.Value).Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
sh3.Select
Rows("10:10").Select
Selection.EntireRow.Offset(1).Resize(NBOFROWS.Value).Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
End With
End Sub
NEXT ATTEMPT:
Sub InsertNumberOfRows()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim Value As Range
Dim wkb As Workbook
Dim rng As Range
Dim tbl As ListObject
Set Value = Worksheets("Rates").Range("K4")
Set wkb = Workbooks("POD Automation10.2")
With wkb
Set sh1 = ActiveWorkbook.Sheets("POD Cost Plan")
Set sh2 = ActiveWorkbook.Sheets("Development Calculator")
Set sh3 = ActiveWorkbook.Sheets("Calculator Calculations")
sh1.Select
Set tbl = ActiveSheet.ListObjects("POD_CostPlan_Tbl")
Set rng = Range("POD_CostPlan_Tbl[#All]").Resize(tbl.Range.Rows.Count + Value, tbl.Range.Columns.Count)
tbl.Resize rng
sh2.Select
Set tbl = ActiveSheet.ListObjects("TBL_UserEntry")
Set rng = Range("TBL_UserEntry[#All]").Resize(tbl.Range.Rows.Count + Value, tbl.Range.Columns.Count)
tbl.Resize rng
sh3.Select
Set tbl = ActiveSheet.ListObjects("TBL_Calculations")
Set rng = Range("TBL_Calculations[#All]").Resize(tbl.Range.Rows.Count + Value, tbl.Range.Columns.Count)
tbl.Resize rng
End With
End Sub