温馨提示:本文翻译自stackoverflow.com,查看原文请点击:excel - How to fix error 438 when adding listobjects?

excel - 添加列表对象时如何修复错误438?

发布于 2020-03-29 13:16:16

我对VBA有问题。我对它还很陌生,所以将不胜感激:)

我要实现的目标:

如果子表有一行填充,我希望它添加一个新行。

我尝试过的

因为我在彼此下面有10个父表,我无法使用,Cells(Cells.Rows.Count, "E").End(xlUp).Row因为它只会计算最后一个父表

因此,我尝试使用listobjects进行操作,但是每当我尝试添加listobject时:

With Worksheets("Uitwendige scheidingen")
.ListObject.Add(Range("F" & NextRow + 25)).Name = "tbl_schuindak_orientatie" & Rij
End With

(Rij =父表)(NextRow =父表的开始位置)

我收到错误438

注意

我之前没有在工作表中添加任何列表对象。因此父表基本上是“伪”表,而不是listobject

查看更多

查看更多

提问者
Nemoko
被浏览
20
JvdV 2020-01-31 18:25

首先,你要.AddListObjectListObjects集合。此外,您无法ListObject通过其Name属性设置新属性。首先,您必须使用适当的源范围对其进行初始化。然后将其重命名。作为一个简单的例子:

在此处输入图片说明

Sub Test()

Dim nxt As Long
Dim tbl As ListObject

With ThisWorkbook.Worksheets("Sheet1")
    For x = 1 To 10 Step 3
        Set tbl = .ListObjects.Add(xlSrcRange, Source:=.Range(.Cells(x, 1), .Cells(x + 1, 1)), XlListObjectHasHeaders:=xlYes)
        tbl.Name = "Table" & x
    Next x
End With

End Sub

在此处输入图片说明

现在将此逻辑应用于您的情况。

注意:在本示例中,请参见如何xlYes应用来告诉XlListObjectHasHeaders参数,它需要考虑到我的源范围具有标头。xlNo如果不设置为