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_1IsEmpty(v1)部分。

因此,我不是100%肯定你为什么得到错误13(假设v1z1也被声明为Variant )。 事实上,如果你使用Set你也必须改变你的循环,填充字典使用v1.Value而不是v1

如果你后来使用N_1并期望它是一个Range对象,那么这将解释一些事情,但是如上所示的代码对我来说运行正常,如果一切都声明为Variant

Excel屏幕截图显示运行中没有错误的问题的代码