2016-03-24 13 views
0

Bu konuda güvendim ve arama yoluyla yanıtı bulamadık.VBA: .RemoveDuplicates için bir Sütun Numarası Variabl Dizisi Oluşturma

Bu, aralığımın son 3 sütunundaki çoğaltmaları kaldırdığımda makro kaydediciden geliyor.

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 

yerine Array (3, 4, 5) bu kullanarak değişkenleri yapan bir makro yapmak istiyorum ama değişkenlerden inşa edilmiş bir dizi geçirmeye çalışırken bir hata alıyorum.

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 

Tamsayı, Uzun ve Varyant veri türlerini denedim, ancak şans yok.

cevap

2

Sen Tamsayılar bir sıfır tabanlı Varyant Array kullanmanız ve

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 
aşağıda gösterildiği gibi parantez yılında Dizi Referans sarabilirsiniz
İlgili konular