Смещение умной таблицы вниз на одну строку с помощью кода VBA Excel при заполнении умной таблицы, расположенной выше, для сохранения отступа между ними.
Условие
На рабочем листе могут находиться две умные таблицы, расположенные как на изображении — одна под другой:
При ручном заполнении верхней умной таблицы необходимо каждый раз вставлять пустую строку перед нижней таблицей для смещения ее вниз.
Вставлять пустые строки при увеличении верхней таблицы можно автоматически с помощью кода VBA Excel.
Решение
Пример кода VBA Excel, автоматически смещающего нижнюю таблицу вниз на одну строку при добавлении к верхней умной таблице новой записи для сохранения существующего отступа между ними.
Объявляем глобальную переменную в модуле книги и добавляем код присвоения этой переменной количества строк верхней таблицы при открытии файла:
1 2 3 4 5 |
Public myTablRows As Long Private Sub Workbook_Open() myTablRows = Sheets("Лист13").ListObjects("Таблица2").ListRows.Count End Sub |
В модуль листа с умными таблицами необходимо вставить следующий код:
1 2 3 4 5 6 7 8 9 10 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Sheets("Лист13").ListObjects("Таблица2").ListRows If ThisWorkbook.myTablRows < .Count Then Rows(.Count + 3).Insert ThisWorkbook.myTablRows = .Count ElseIf ThisWorkbook.myTablRows > .Count Then ThisWorkbook.myTablRows = .Count End If End With End Sub |
Когда количество записей верхней умной таблицы увеличивается, автоматически вставляется одна новая пустая строка перед первой пустой строкой под верхней таблицей.
Число в выражении (.Count + 3)
равно количеству строк выше записей верхней таблицы плюс 1. Строка заголовков включена в таблицу, но в объект ListRows
(коллекция строк/записей) не входит. Поэтому для нашего примера число равно 3, включая строку заголовков.
Блок ElseIf
добавлен в условие, чтобы код VBA Excel для смещения умной таблицы вниз продолжал правильно работать при удалении строк из верхней таблицы.