我试图编写一个宏,可以从表中删除重复项,而不必使用“Array(1,2,....)”手动写出表中的所有列
但是,由于某种原因,这似乎是不可能的。请参阅下面的代码,我尝试了两种不同的方法来删除重复项。
方法 1 的工作原理是手动输入数组。但是,如果我尝试将其存储在变量中,方法 2 就会失败。有什么建议的解决方案或想法为什么会发生这种情况?
Sub RemoveDups()
Dim test As Variant
Dim i As Long
' Define the array for testing
test = Array(1, 2, 3)
' Use the test array for RemoveDuplicates
'Method 1
[Table].RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes 'This works
'Method 2
[Table].RemoveDuplicates Columns:=test, Header:=xlYes 'This does not work
End Sub
在 VBA 中,当通过
Method 2
中使用的语法指定时,数组不能直接用作某些方法中的参数。 相反,您必须迭代测试数组中的每一列,一次删除一列的重复项:
For i = LBound(test) To UBound(test)
[Table].RemoveDuplicates Columns:=Array(test(i)), Header:=xlYes
Next i