Excel 2013 VBA运行时错误5与listobjects.add

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

我有一个主子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为这项工作的一部分,我将把一些导入的数据转换成一个表(数据是从CSV文件导入的)并放入“IncidentsData”工作表中。编译整个模块的代码。但是,当我单步执行模块时,在将导入的数据格式化到以下位置的表中的行上会出现“运行时错误'5':过程调用或参数无效”:

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,谢谢!我真的很感谢你的帮助。这就解决了问题。