Доброго времени суток форумчане, желаю универсализировать уже имеющийся макрос, чтобы каждый год не вносить изменений.
Каждый год создается новый лист с идентичной таблицей и есть лист на котором идут расчеты при помощи макроса по годам.
Т.е. мы выбираем год и следующая формула подгружала данные с таблицы в массив для дальнейших действий:
Код |
---|
tb1 = ActiveWorkbook.Sheets("Исполнено_2021").ListObjects("Таблица4").DataBodyRange.Value |
я её переделал слегка для того чтобы брать нужный лист:
Код |
---|
yearNum = Cells(2, 2)
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum).ListObjects("Таблица4").DataBodyRange.Value |
А как обратиться к нужной таблице? Я предполагаю может можно взять индекс последней на последнем листе (2021) и через номер года вычислять индекс следующей? ну например на листе 2021 таблица с индексом 6 то для листа 2022 и любого следующего будет
Код |
---|
tabIndex = yearNum - 2015 |
и тогда универсальный код массива будет
Код |
---|
yearNum = Cells(2, 2)
tabIndex = yearNum - 2015
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum).ListObjects(tabIndex).DataBodyRange.Value |
А может есть путь по красивее и адекватнее?
Вот привел пример файла в него будет добавляться в следующем году лист Исполнено_2022 потом через год Исполнено_2023 и на каждом новая умная таблица аналогично прошлому году. Как мне универсально загонять данные в массив tb1 при выборе нужного года соответственно? как обратиться к нужному листу я понимаю
Код |
---|
yearNum = Cells(2, 2)
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum) |
... а как к новой таблице?