【问题标题】:Excel 2013 VBA Runtime Error 5 with listobjects.addExcel 2013 VBA 运行时错误 5 与 listobjects.add
【发布时间】:2018-12-01 09:23:31
【问题描述】:

我有一个主子程序,我用它来设置我的工作表和数据,以便在其他子程序中进行分析。作为其中的一部分,我将一些导入的数据转换为表格(数据是从 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.https://msdn.microsoft.com/en-us/vba/excel-vba/articles/listobjects-object-excel 3. VBA中创建表的堆栈溢出问题How to create a table using vba? 4.关于在excel vba中创建表格的分析选项卡 https://analysistabs.com/excel-vba/tables-examples/ 加上一堆其他人。不幸的是,他们没有帮助我找出我做错了什么。任何帮助将不胜感激。 干杯,S26

已编辑:包含 .Name 因为这也不起作用并引发运行时错误并修复拼写错误/错误。

【问题讨论】:

  • 您在错误的行上添加了.Name
  • 谢谢,我知道。即使语法现在看起来是正确的并且我已经删除了拼写错误,它仍然不起作用并引发相同的错误。 (不要在深夜编码应该是那个故事的寓意)
  • Dim ISDRange as Range 然后Set ISDRange = ...
  • @BigBen,谢谢!我真的很感谢你的帮助。这样就解决了。

标签: vba excel runtime-error listobject


【解决方案1】:

首先,将xlSrcERangelYes 更改为xlSrcRangexlYes

您在Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes) 末尾缺少.Name。您尚未指定要将新创建表的哪个属性设为"IncidentsDataTable"

或者,您可以这样做:

Set incidentsData1 = Worksheets("IncidentsData").ListObjects.Add(xlSrcRange, ISDRange, , xlYes)
incidentsData1.Name = "IncidentsDataTable"

如果您采用这种方法,看起来您根本不需要更改 Name

【讨论】:

  • 非常感谢您指出这一点。我已经用 '.Name' 尝试过这种格式并最终玩弄它,因为我无法让它工作,不幸的是,你的第二个解决方案也没有。即使我知道理论上两者都应该工作,但它仍然会引发运行时错误5,这很奇怪。你知道它为什么会这样做吗?
  • 应该是xlSrcRangexlYes 吧?已编辑。
  • 将 ISDRange 调暗为范围,然后设置 ISDRange = ... – BigBen 14 分钟前
  • 这个故事的寓意是不要在晚上回答问题。并使用Option Explicit
猜你喜欢
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
相关资源
最近更新 更多