【发布时间】:2019-03-05 02:49:55
【问题描述】:
下面有两组代码,上面的(作为 cmets)不起作用,而下面的代码起作用。我的目标是从我事先不知道其列数的范围中删除重复项。上面的还应该创建一个类似于 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
【问题讨论】:
-
使用 (ColArray) 即把 () 环绕它。
-
我认为问题在于如何从考虑所有列的范围中删除重复项。上面的代码不能按照另一个问题的链接中的说明工作,但是没有代码如何删除所有列的重复项。
-
鉴于链接的答案不再可行,我已根据编辑取消了投票。请您进行编辑以使问题更清楚。本质上,您现在说的是,如果您在 datarange.Columns.Count() 上使用循环生成数组,然后尝试 datarange.RemoveDuplicates Columns:=(ColArray) 您会收到运行时错误 5 无效过程调用。使用 ColArray = Array(1, 2, 3, 4, 5) 然后使用 atarange.RemoveDuplicates Columns:= ColArray 传递数组时,您不会得到此数组。您可以编辑以完整显示顶部和底部并显示错误消息吗?
-
尝试添加evaluate,运行流畅,但删除了不是真正重复的行。
-
请整理问题(如已建议的那样)并添加一些具有预期结果的示例数据。这将使准确回答这个问题更容易。
标签: excel vba duplicates