VBA:为.RemoveDuplicates创建列号Variabl数组

时间:2016-03-24 08:21:24

标签: excel vba excel-vba

我对这个问题感到困惑,并且无法通过搜索找到答案。

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

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

我想创建一个使用变量而不是Array(3,4,5)执行此操作的宏 但是在尝试传递从变量构建的数组时出现错误。

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数据类型,但没有运气。

1 个答案:

答案 0 :(得分:2)

您可以使用从零开始的整数变量数组并将数组参考包装在括号中,如下所示

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