VBA:为.RemoveDuplicates创build一个列号variables数组

我被困在这一个,并没有能够通过searchfind答案。

当我从我的范围的最后3列删除重复项时,这来自macroslogging器。

Sub Macro1() ' Macro1 Macro Range("A1:E8").Select Application.CutCopyMode = False ActiveSheet.Range("$A$1:$E$8").RemoveDuplicates _ Columns:=Array(3, 4, 5), Header:=xlYes End Sub 

我想要做一个macros使用variables而不是数组(3,4,5),但是当我尝试传递一个由variables构build的数组时,我得到一个错误。

 Sub MyTry1() Dim iArray() As Integer, i As Integer With ActiveSheet.Range("$A$1:$E$8") ReDim iArray(1 To .Columns.Count - 2) For i = 1 To 3 iArray(i) = i + 2 Next i 'Result is iArray= (3, 4, 5) .RemoveDuplicates Columns:=iArray, Header:=xlYes 'returns Run-time error "5": Invalid procedure call or argument End With End Sub 

我已经尝试了Integer,Long和Variant数据types,但没有运气。

您可以使用从零开始的Variant整型数组,并将Array Reference放在括号中 ,如下所示

 Sub MyTry2() Dim iArray As Variant, i As Integer Dim rData As Range Set rData = Range("$A$1:$E$8") With rData ReDim iArray(0 To .Columns.Count - 3) For i = 0 To UBound(iArray) iArray(i) = i + 3 Next i .RemoveDuplicates Columns:=(iArray), Header:=xlYes End With End Sub