Я вызываю подпрограмму, которая выбирает и конвертирует диапазоны на нескольких листах в таблицы.Он генерирует таблицы и называет их «SIS_1», «SIS_2» и так далее.Чтобы использовать эти таблицы в моем текущем подпрограмме, я могу объявить и установить таблицу "SIS_1" на листах 3, но не могу объявить и установить таблицу "SIS_2" на листе 4 и так далее.Имеет ли это какое-либо отношение к коду листа (выделено красным)?
![IMG2](https://i.stack.imgur.com/CoNJn.png)
Я не могу найти, в чем проблема.Если я вручную переименую «SIS_2» в Excel в «SIS_x», а затем переименую его обратно в «SIS_2», это, похоже, решит проблему, и я смогу объявить переменную как обычно.Я не понимаю, почему это так.
![IMG1](https://i.stack.imgur.com/5p1r6.png)
Код Я хочу объявить ListObject
Public Sub ImportButton_Click()
Dim totalSheets As Integer
Dim startSheet As Integer, endSheet As Integer
Dim masterSIS As ListObject, sourceSIS As ListObject
Dim i As Integer
Set masterSIS = Worksheets("MasterSIS").ListObjects("MasterSIS")
totalSheets = ThisWorkbook.Worksheets.Count
Call importSheets([filePath])
startSheet = totalSheets + 1
endSheet = ThisWorkbook.Worksheets.Count
Call convertToTable(startSheet, endSheet, "SIS")
For i = 1 To endSheet - totalSheets
Set sourceSIS = Worksheets(startSheet).ListObjects("SIS_" & i)
Call appendTable(masterSIS, sourceSIS)
startSheet = startSheet + 1
Next i
End Sub
Для тех, у кого есть подобные проблемы.Надеюсь, что это поможет.
Нашел решение здесь https://www.dingbatdata.com/2017/11/24/referencing-listobjects-with-vba/.
Чтобы объявить LinkObject, вам нужно сделать это следующим образом Range("TableName").ListObject
. Похоже, что "будет ошибка VBA, еслилист меняет свою позицию.