VBA RemoveDuplicates:无法按变量设置列

时间:2016-10-06 08:56:54

标签: vba duplicates

我使用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多个条目的数组,这些条目甚至可能会随着时间而改变,我对第一个解决方案并不满意。

你能帮助我吗?

干杯, 彼得

2 个答案:

答案 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]