Removeduplicates не работает для массивов с размером в зависимости от диапазона данных - PullRequest
0 голосов
/ 29 сентября 2018

Ниже представлены 2 набора кодов, верхний (в виде комментариев) не работает, а приведенный ниже работает.Моя цель - удалить дубликаты из диапазона, для которого я не знаю количество столбцов заранее.Приведенный выше также должен создать массив, похожий на Array (1,2,3,4,5).Есть идеи, почему внизу работает, а сверху нет?Заранее спасибо!(Вставил неправильный блок кода ранее.)

Я получил ошибку: Ошибка времени выполнения 5: неверный вызов процедуры или аргумент.

Sub RemoveDup(datarange As Range)

    Dim ColArray() As Variant
    Dim i As Integer

'    ReDim ColArray(1 To datarange.Columns.Count())
'
'    For i = 1 To datarange.Columns.Count()
'        ColArray(i) = i
'    Next i

    ColArray = Array(1, 2, 3, 4, 5)

    datarange.RemoveDuplicates Columns:=(ColArray), _
        Header:=xlNo

End Sub

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Это моя версия в качестве параметризованного сабвуфера и использование With

Sub RemoveDup(datarange As Range)
' removes duplicate taking all columns into account
Dim i As Long
Dim varItems() As Variant
    With datarange
        ReDim varItems(0 To .Columns.Count - 1)
        For i = 1 To .Columns.Count
            varItems(i - 1) = i
        Next i
        .RemoveDuplicates Columns:=(varItems), Header:=xlNo
    End With
End Sub
0 голосов
/ 29 сентября 2018

Вам нужно начать сборку массива с 0 ... следующим образом:

Dim datarange As Range
Dim ColArray() As Variant
Dim i As Integer

Set datarange = Range("A1:E6")
ReDim ColArray(0 To datarange.Columns.Count() - 1)

For i = 0 To datarange.Columns.Count() - 1
    ColArray(i) = i + 1
Next i

datarange.RemoveDuplicates Columns:=(ColArray), Header:=xlNo

Примечание: я только что ввел диапазон как Range ("A1: A6"), но вы можете указать что угодноты хочешь.

...