динамическое переименование таблицы Excel для каждого листа и пересылка динамического имени другим модулям и макросам

следующая настройка

1 рабочий лист с необработанными данными 1 рабочий лист в неделю (например, неделя 31, 32, ...)

необработанные данные копируются с помощью действия пользователя на текущем рабочем листе. однако, поскольку имя таблицы уже существует на другой неделе, имя таблицы «tableweek» следующая копия рабочего листа переименовывает свою таблицу в «tableweek2», «tableweek3» и т. д., поскольку это непредсказуемо, я бы предпочел назвать таблицу так же, как переменная рабочего листа, чтобы я мог использовать имя таблицы в дальнейших макросах и сводных данных.

однако со всеми темами о динамическом переименовании имен таблиц я не мог понять, как правильно установить его и передать другим макросам (в других модулях)

лучшее, что я нашел, это

Sub RenameTable()
With ActiveSheet
    .ListObjects(1).Name = "MyTableName"
End With

Конец сабвуфера

однако это просто вручную, когда я комбинирую его с динамическим именем (например, формулой из ячейки), я не заставляю его работать. кроме того, как передать его всем другим макросам.

спасибо за любую помощь или указание направления.


person Matt    schedule 03.08.2018    source источник
comment
Почему вы переименовываете эти объекты во время выполнения? О скольких таблицах/рабочих листах мы говорим здесь? Можете ли вы дать некоторую предысторию, то есть, что у вас есть, что вам нужно иметь, и почему вы пытаетесь сделать это таким образом?   -  person ashleedawg    schedule 03.08.2018
comment
~ 54 таблицы на документ (одна в неделю) может быть даже больше, если есть необходимость создать другую версию одной недели. имя таблицы позже используется в автоматически создаваемых сводных таблицах   -  person Matt    schedule 03.08.2018


Ответы (1)


Кажется, я был не так далек от решения:

Sub RenameTable()
    Dim tblName As String
    tblName = Range("D8").Text

    With ActiveSheet
        .ListObjects(1).Name = tblName
    End With
End Sub

Теперь мне просто нужно передать это "tblName", и это должно быть так.
Делюсь им, если кому-то еще нравится это "решение"

person Matt    schedule 03.08.2018