【发布时间】:2019-11-11 00:29:49
【问题描述】:
我调用一个 sub 来选择多个工作表中的范围并将其转换为表格。它生成表并将它们命名为“SIS_1”、“SIS_2”等。要在我当前的子表中使用这些表,我可以在工作表 3 中声明和设置表“SIS_1”,但不能在工作表 4 中声明和设置表“SIS_2”,依此类推。和sheet code有关系吗(红色高亮)?
我似乎找不到问题所在。如果我手动将 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错误'。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。