我调用一个子控件,该子控件选择并将多个工作表中的范围转换为表格。它生成表并将其命名为“ SIS_1”,“ SIS_2”,依此类推。要在当前子目录中使用这些表,我可以在工作表3中声明并设置表“ SIS_1”,但不能在工作表4中声明并设置表“ SIS_2”,依此类推。与工作表代码(红色突出显示)有什么关系吗?
我似乎找不到问题所在。如果我在excel中将“ SIS_2”手动重命名为“ SIS_x”,然后将其重命名为“ SIS_2”,则似乎可以解决该问题,然后可以像往常一样声明该变量。我不明白为什么会这样。
代码我想声明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错误”。
答案 0 :(得分:0)
发现了问题,原因是前一个子句中的循环代码错误地生成了表名。修复它,错误消失。