excel - ListObject 的“下标超出范围”错误
问题描述
我调用一个 sub 来选择多个工作表中的范围并将其转换为表格。它生成表并将它们命名为“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 错误”。
解决方案
发现上一个子中的循环代码错误生成表名的问题。修复它,错误消失了。
推荐阅读
- android - 实施 'com.android.support:appcompat-v7:28.0.0' - 无法解决:firebase-core/auth-15.0.0
- android - 仅显示电子邮件程序时发送电子邮件
- angular - 无法在 Angular 材料表中设置未定义错误的属性“filterPredicate”
- xamarin - 检测 Xamarin Forms 中的网络更改
- java - 在“::”双冒号表示法中内省方法引用?
- javascript - 选中复选框上的 Javascript 克隆此 div,未选中删除此 div
- java - 对对象的 ArrayList 进行排序
- sql - SQL Server:根据多个匹配值提取多个字符串
- listview - 如何在 Xamarin C# 中绑定数据列表视图
- java - Android Studio - 无法识别语法错误