Я начал делать код для своего второго варианта. Строки под таблицей добавляются. Пока не получается написать новый диапазон для таблицы
| Код |
|---|
Private Sub CommandButton1_Click()
Dim vRetVal
Dim fcell3 As Variant
Dim b As Variant
Dim LastRow3 As Integer
Dim vrowCol
Dim a As String
Dim c As String
Dim d As Variant
'Поиск заголовка над таблицей
Set fcell3 = Columns("A:A").Find(БазаФурнитуры.ИмяПодраздела.Text)
If Not fcell3 Is Nothing Then
'активная ячейка для определения имени таблицы
Worksheets(БазаФурнитуры.ИмяРаздела.Text).Range("A" & fcell3.Row + 2).Activate
End If
'Определение имени таблицы
Dim Obj As ListObject
If ActiveSheet.ListObjects.Count = 0 Then Exit Sub
For Each Obj In ActiveSheet.ListObjects
If Not Intersect(ActiveCell, Obj.Range) Is Nothing Then
'MsgBox Obj.Name 'ИМЯ ТАБЛИЦЫ
d = Obj.Name
Debug.Print ActiveSheet.ListObjects(Obj.Name).Range.Address
a = Range(ActiveSheet.ListObjects(Obj.Name).Range.Address(0, 0)).Row 'Первая строка в таблице
'MsgBox a
'Определение количества строк в таблице
LastRow3 = Range(Obj.Name).rows.Count
MsgBox LastRow3
b = a + LastRow3 + 1 'первая строка под таблицей для определения вставки строк
'MsgBox b
Sheets(ИмяРаздела.Text).Range("A" & b).Activate
End If
Next
'Определение количества строк для вставки и их вставка
vrowCol = InputBox("Сколько строк добавить?", "Ввод значений")
vrowCol = Val(vrowCol): If vrowCol = 0 Then Exit Sub
With ActiveCell
Application.ScreenUpdating = False
c = CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)
'Range(CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)).HorizontalAlignment = xlCenter 'выравнивание текста по центру ячейки в таблице, кроме наименования
'Range(CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)).EntireColumn.AutoFit 'автоширина ячейки
rows(c).Insert Shift:=xlDown
Application.ScreenUpdating = True
End With
'Увеличение диапазона таблицы на количество вставленных строк
With ActiveSheet.ListObjects(d)
.Resize .Range.Resize(a + vrowCol)
End With
End Sub
|