Excel 2013 VBA 运行时错误 5 listobjects.add
Excel 2013 VBA Runtime Error 5 with listobjects.add
我有一个主要的子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为其中的一部分,我将一些导入的数据转换为 table(数据是从 CSV 文件导入的)并放入 "IncidentsData" 工作表中。编译整个模块的代码。但是,当我单步执行模块时,我在将导入的数据格式化为 table 的行中得到 "Run-Time Error '5': Invalid procedure call or argument":
Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes).Name = "IncidentsDataTable"
整体子程序如下:
Public Sub Categorise_Incidents()
Dim incidentsData1 As ListObject
Set Commodity = Worksheets("CommoditySheet").ListObjects("Table1")
Set QEListByGenus = Worksheets("QEListByGenus")
Set Results = Worksheets("Results")
Set IncidentsDataSheet = Worksheets("IncidentsData")
ISDRange = IncidentsDataSheet.UsedRange
Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes).Name = "IncidentsDataTable"
Set incidentsData1 = IncidentsDataSheet.ListObjects("IncidentsDataTable")
initialiseDictionaries
MainSearchLoop QEListByGenus, incidentsData1, dictQENSGenus
End Sub
我已经访问了很多网站来了解如何执行此操作,包括:
1. excel vba 中运行时错误 5 的堆栈溢出页面 - 其中大部分似乎特定于 pivot tables 并且没有告诉我我做错了什么
2. https://msdn.microsoft.com/en-us/vba/excel-vba/articles/listobjects-object-excel
3. 关于在 VBA 中创建 table 的堆栈溢出问题
4. 在 excel vba 中创建 table 的分析标签
https://analysistabs.com/excel-vba/tables-examples/
加上其他一堆。不幸的是,他们没有帮助我弄清楚我做错了什么。任何帮助将不胜感激。
干杯,S26
已编辑:包含 .Name 因为它也不起作用并引发运行时错误并修复 typos/errors.
首先,将xlSrcERange
和lYes
更改为xlSrcRange
和xlYes
。
您缺少 Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
末尾的 .Name
。您尚未指定要成为新创建的 table 中的哪个 属性 "IncidentsDataTable"
。
或者,您可以这样做:
Set incidentsData1 = Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
incidentsData1.Name = "IncidentsDataTable"
如果采用这种方法,看起来您根本不需要更改 Name
。
我有一个主要的子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为其中的一部分,我将一些导入的数据转换为 table(数据是从 CSV 文件导入的)并放入 "IncidentsData" 工作表中。编译整个模块的代码。但是,当我单步执行模块时,我在将导入的数据格式化为 table 的行中得到 "Run-Time Error '5': Invalid procedure call or argument":
Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes).Name = "IncidentsDataTable"
整体子程序如下:
Public Sub Categorise_Incidents()
Dim incidentsData1 As ListObject
Set Commodity = Worksheets("CommoditySheet").ListObjects("Table1")
Set QEListByGenus = Worksheets("QEListByGenus")
Set Results = Worksheets("Results")
Set IncidentsDataSheet = Worksheets("IncidentsData")
ISDRange = IncidentsDataSheet.UsedRange
Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes).Name = "IncidentsDataTable"
Set incidentsData1 = IncidentsDataSheet.ListObjects("IncidentsDataTable")
initialiseDictionaries
MainSearchLoop QEListByGenus, incidentsData1, dictQENSGenus
End Sub
我已经访问了很多网站来了解如何执行此操作,包括:
1. excel vba 中运行时错误 5 的堆栈溢出页面 - 其中大部分似乎特定于 pivot tables 并且没有告诉我我做错了什么
2. https://msdn.microsoft.com/en-us/vba/excel-vba/articles/listobjects-object-excel
3. 关于在 VBA
已编辑:包含 .Name 因为它也不起作用并引发运行时错误并修复 typos/errors.
首先,将xlSrcERange
和lYes
更改为xlSrcRange
和xlYes
。
您缺少 Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
末尾的 .Name
。您尚未指定要成为新创建的 table 中的哪个 属性 "IncidentsDataTable"
。
或者,您可以这样做:
Set incidentsData1 = Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
incidentsData1.Name = "IncidentsDataTable"
如果采用这种方法,看起来您根本不需要更改 Name
。