VBA 数组未按预期工作。 Columns:=Array(1, 2, 3) 有效,但 Columns:=test 失败,即使 test = Array(1,2,3)

问题描述 投票:0回答:1

我试图编写一个宏,可以从表中删除重复项,而不必使用“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
arrays excel vba
1个回答
0
投票

在 VBA 中,当通过

Method 2
中使用的语法指定时,数组不能直接用作某些方法中的参数。 相反,您必须迭代测试数组中的每一列,一次删除一列的重复项:

For i = LBound(test) To UBound(test)
    [Table].RemoveDuplicates Columns:=Array(test(i)), Header:=xlYes
Next i
© www.soinside.com 2019 - 2024. All rights reserved.