我使用RemoveDuplicates,除了硬编码列设置之外,找不到任何其他方法。这是代码可以工作:
Worksheets("SheetName").Activate
ActiveSheet.Range("A:Z").RemoveDuplicates _
Columns:=VBA.Array(1, 2, 3), _
Header:=xlYes
但是这段代码会抛出“运行时错误5”:
Dim ArrayColumns() As Variant
ArrayColumns = VBA.Array(1, 2, 3)
Worksheets("SheetName").Activate
ActiveSheet.Range("A:Z").RemoveDuplicates _
Columns:=ArrayColumns, _
Header:=xlYes
由于我实际上想要使用一个包含100多个条目的数组,这些条目甚至可能会随着时间而改变,我对第一个解决方案并不满意。
你能帮助我吗?
干杯, 彼得
答案 0 :(得分:0)
在(
)
之前和ArrayColumns
之后
Sub RemDuplicates()
Dim ArrayColumns() As Variant
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Sheets("SheetName")
ArrayColumns = Array(1, 2, 3)
With Sht
.Range("A:Z").RemoveDuplicates Columns:=(ArrayColumns), Header:=xlYes
End With
End Sub
答案 1 :(得分:0)
只是提到原始帖子,其中声明了ArrayColumns = VBA.Array(1,2,3)。如果为模块设置了Option Base 1,则只能使用带有RemoveDuplicates的VBA.Array。这就是为什么ArrayColumns = Array(1,2,3)最终工作[假设Option Base默认为0]