我对这个问题感到困惑,并且无法通过搜索找到答案。
当我从我的范围的最后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数据类型,但没有运气。
答案 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