Vba excel:运行窗体时出现运行时错误9

Vba excel:运行窗体时出现运行时错误9,vba,excel,Vba,Excel,我有一个名为BASE_GERAL_FUNCIONARIOS的工作表,其中有五列信息,我想用我使用下面的代码创建的表单填充这些信息。我可以键入所有信息,并将此代码与“插入”按钮关联: 我的表格与我要填写的表格放在不同的表格中。不管怎样,当我运行代码时,我总是遇到运行时错误9,它突出显示了代码的这一部分: Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add

我有一个名为BASE_GERAL_FUNCIONARIOS的工作表,其中有五列信息,我想用我使用下面的代码创建的表单填充这些信息。我可以键入所有信息,并将此代码与“插入”按钮关联:

我的表格与我要填写的表格放在不同的表格中。不管怎样,当我运行代码时,我总是遇到运行时错误9,它突出显示了代码的这一部分:

Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add

我想用“ActivateSheet”代替工作表(“”)。激活,但我真的不知道如何解决这个问题。有人可以帮忙吗?

错误9表示下标超出范围,即您所指的对象在工作簿/工作表中不存在

确保工作簿中有一个名为“BASE\U GERAL\U FUNCIONARIOS”的工作表,并且在该工作表上有一个名为“BASE\U GERAL\U FUNCIONARIOS”的excel表格

除此之外,正确的语法如下<代码>工作表(“基本功能”).ListObjects(“基本功能”).ListRows.Add

第二行也是这样的

Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS")

.Activate
不会返回任何内容,您不能像现在这样连续调用。而且您不需要
。无论如何,只需将其删除并执行
工作表(“名称”).ListObjects(“名称”).ListRows.Add
。此外,请确保字符串文字不包含打字错误,并且用户不重命名这些工作表/表格,否则,您将得到与您得到的错误完全相同的错误:下标超出范围。实际上,表与工作表的名称不同。我在想一种没有名字的操作系统引用方式,但似乎我不能像你说的那样,如果那张表上只有一个表,那么就做
。ListObjects(1)
@Mat'sMug事实上有两个表,但是第一个表现在有BASE\u GERAL\u functionarios名称,仍然不起作用。。。我将尝试在另一个工作表中插入第二个表,以检查这是否是问题所在。实际上,我的表没有此名称。。。只有床单上有。有没有一种方法可以在不更改表名的情况下进行引用?您可以通过索引号引用表,因此,如果工作表只有一个表,您可以通过。ListObjects(1)我知道了!当我在同一张表中有两张表时,有没有办法进行这种类型的引用?是的。仅使用目标表的索引。要获取表详细信息,请运行以下代码。。。。如果.ListObjects.Count>0,则当i=1时,Sub GetTableIndex()使用ActiveSheet调整i的长度到.ListObjects.Count'通过按Ctrl+G打开即时窗口以读取表详细信息Debug.Print.ListObjects(i).Name&“表索引-”&i下一个i如果以End Sub结束,则结束
Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS")