For循环中运行时错误13
出于某种原因,我得到一个'运行时13'错误,当我执行下面的代码。
Dim N_1 As Variant Worksheets("Trucks").Activate Range("G9").Activate Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Select If ActiveCell.Value = "" Then Exit Do Loop ActiveCell.Offset(-1, 0).Select N_1 = Range(ActiveCell, "G9") With CreateObject("scripting.dictionary") .comparemode = vbTextCompare For Each v1 In N_1 If Not IsEmpty(v1) Then If Not .exists(v1) Then .Add v1, Nothing End If Next z1 = .keys End With
Range(...)
返回一个对象types,所以必须使用Set
:
Set N_1 = Range(ActiveCell, "G9")
Range(...)
确实返回一个对象types,而不使用Set
将其分配给一个Variant
Set
产生一个范围内单元格值的二维variables数组。 这适用For Each v1 in N_1
部分中的For Each v1 in N_1
和IsEmpty(v1)
部分。
因此,我不是100%肯定你为什么得到错误13(假设v1
和z1
也被声明为Variant
)。 事实上,如果你使用Set
你也必须改变你的循环,填充字典使用v1.Value
而不是v1
如果你后来使用N_1
并期望它是一个Range
对象,那么这将解释一些事情,但是如上所示的代码对我来说运行正常,如果一切都声明为Variant
: