我有10张Excel表格,每张表格都加载了不同的XML Feed连接 因此,为了定期跟踪这10个列表更新,我使用了XML附加数据!
但问题是,每次XML表刷新时,Feed都会提供重复的项目。
现在,我希望VBA代码一次性删除所有表格中的所有重复项目。
以下是我正在使用的代码:
Sub Macro_Table()
Dim ws As Worksheet
Dim xmltable As LisObject
For Each ws In ThisWorkbook.worksheets
Set xmltable = ws.ListObjects(1)
xmltable.Range().RemoveDuplicate Columns:=Array(4), Headers:= Yes
Next ws
End Sub
但是在运行时 - 会出现以下错误:
子脚本超出范围
答案 0 :(得分:3)
我猜错误是您点击了一个不包含ListObjects(1)
的工作表。它必须在那条线上的原因是因为它下面的线根本没有编译:
xmltable.Range().RemoveDuplicate Columns:=Array(4), Headers:= Yes
......看起来应该更像这样:
xmltable.Range.RemoveDuplicates Columns:=Array(4), Header:=xlYes
除非引用子范围,否则您需要从.Range()调用中删除括号。 "集管:="不是参数名称,它应该是" Header:=",并且您需要使用枚举xlYes而不是未定义的值"是"。最后,RemoveDuplicate
应为RemoveDuplicates
。
如果您没有启用Option Explicit
,则Yes将成为新的Variant,被分配默认值0,并且基本上xlGuess
传递给该函数。
您还应该更正变量声明,Dim xmltable As ListObject
而不是LisObject
。
将它放回去并检查ListObject是否存在,你得到这样的东西:
Sub Macro_Table()
Dim ws As Worksheet
Dim xmltable As ListObject
For Each ws In ThisWorkbook.Worksheets
If ws.ListObjects.Count <> 0 Then
Set xmltable = ws.ListObjects(1)
xmltable.Range.RemoveDuplicates Columns:=Array(4), Header:=xlYes
End If
Next ws
End Sub