Excel 2013 VBA运行时错误5与listobjects.add
我有一个主子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为这项工作的一部分,我将把一些导入的数据转换成一个表(数据是从CSV文件导入的)并放入“IncidentsData”工作表中。编译整个模块的代码。但是,当我单步执行模块时,在将导入的数据格式化到以下位置的表中的行上会出现“运行时错误'5':过程调用或参数无效”:Excel 2013 VBA运行时错误5与listobjects.add,vba,excel,runtime-error,listobject,Vba,Excel,Runtime Error,Listobject,我有一个主子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为这项工作的一部分,我将把一些导入的数据转换成一个表(数据是从CSV文件导入的)并放入“IncidentsData”工作表中。编译整个模块的代码。但是,当我单步执行模块时,在将导入的数据格式化到以下位置的表中的行上会出现“运行时错误'5':过程调用或参数无效”: Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes).Name
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上的堆栈溢出页-其中大多数似乎是特定于透视表的,并且没有告诉我我做错了什么
2.
3.在VBA中创建表的堆栈溢出问题
4.有关在excel vba中创建表的分析选项卡
再加上一些其他的。不幸的是,他们没有帮助我找出我做错了什么。任何帮助都将不胜感激。
干杯,S26
已编辑:包括.Name,因为它也不起作用并引发运行时错误和修复打字错误。首先,将
xlSrcERange
和lYes
更改为xlSrcRange
和xlYes
您缺少工作表(“IncidentsData”).ListObjects.Add(xlSrcRange、ISDRange、xlYes)末尾的.Name
。您尚未指定新创建的表的哪个属性是“IncidentsDataable”
或者,您可以执行以下操作:
Set incidentsData1 = Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
incidentsData1.Name = "IncidentsDataTable"
如果您采用这种方法,看起来根本不需要更改
名称。非常感谢您指出这一点。我已经用“.Name”尝试过这种格式,但由于无法使其正常工作,所以最终使用了它,不幸的是,您的第二个解决方案也不能。尽管理论上我知道这两种方法都应该有效,但它仍然会抛出运行时错误5,这很奇怪。你知道它为什么会这样做吗?应该是xlSrcRange
和xlYes
可能吧?已编辑。将ISDRange设置为范围,然后设置ISDRange=…–BigBen 14分钟前的故事的寓意是晚上也不要回答问题。然后使用选项Explicit
。您在错误的行中添加了.Name
。谢谢,是的,我知道。它仍然不工作,并抛出相同的错误,即使语法现在看来是正确的,我已经删除了打字错误。(这个故事的寓意应该是不要在深夜编码)Dim ISDRange as Range
然后Set ISDRange=…
@BigBen,谢谢!我真的很感谢你的帮助。这就解决了问题。