代码运行正确。根据回应进行了修改。
我有以下代码,用于从数组 MyArray 中删除重复项。在 d(MyArray(i)) = 1
处出现调试错误。错误是下标超出范围。不确定是什么原因导致的,也不知道我的代码哪里有问题。
Sub DataStats1()
Dim Range1 As Range
Dim MyArray As Variant
Set Range1 = Application.InputBox("Select Range1:", Title:="Set Data Range", Type:=8)
Range1.Select
MyArray = Application.Transpose(Application.Transpose(Range1.Value))
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
For Each el In MyArray
d(el) = 1
Next
Dim v As Variant
v = d.Keys()
For i = 1 To UBound(v)
MsgBox v(i)
Next i
End Sub
MyArray
始终是二维数组,即使你选择单行/列范围。例如,对于单列范围,你应该使用d(MyArray(i,1)) = 1
而不是d(MyArray(i)) = 1
。但我建议你将For i = LBound(MyArray) To UBound(MyArray)
改为For Each el in MyArray
,然后使用d(el) = 1
。 - Dmitry Pavlivdebug.print(MyArray(i))
来查看错误发生的时间。请注意,字典不应该有重复的键。 - html_programmer