2015-01-28 7 views
0

У меня есть следующий код, чтобы удалить дубликаты в Excel:Кодирование массива в Excel VBA

AlertRange.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _ 
    7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _ 
    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49), Header:=xlNo 

Он отлично работает. Но может ли быть лучший способ предоставить массив параметру «Столбцы»? То, как он кодируется, выглядит глупо.

+0

'Array (1:49)'? или 'Array (« 1:49 »)' Не уверены, что это работает так же, как 'Range()' или 'Columns()' – Chrismas007

+0

@ Chrismas007 - попробовал оба, но кажется, что синтаксис не работает – chapter3

ответ

3

С RemoveDuplicates хочет Variant, с нуля, массив, а не Range вы могли бы сделать это с помощью цикла:

Sub Macro() 
    Dim ary(0 To 48) 

    For i = 0 To 48 
     ary(i) = i + 1 
    Next i 

    Range("$A$1:$BB$20").Select 
    ActiveSheet.Range("$A$1:$BB$20").RemoveDuplicates Columns:=(ary), Header _ 
     :=xlNo 
End Sub 

Пожалуйста, обратите внимание на (ичный)
Это это для размещения очень старой ошибки VBA.

+2

+1 хорошая точка с (ary). Для получения дополнительной информации это может быть полезно [link] (http://stackoverflow.com/questions/5413765/what-are-the-rules-government-usage-of-brackets-in-vba-function-calls). – dee

+0

@dee Большое спасибо за ссылку .......... чрезвычайно информативный! –

+0

@ Gary'sStudent ... thx! Я делаю его маленькой подпрограммой для генерации массива. – chapter3