循环数组中的错误

时间:2015-11-06 14:49:58

标签: vba excel

如果一个日期进入我的数组,我测试此代码循环。 用A列上的例子,没什么问题, 结果消息是3,在我看到的即时窗口中(01/01 / 2015,06 / 01 / 2015,02 / 02/2015) 为了测试某些情况,当只有1天进入阵列时,我删除了2天(A3,A4),如C列。 结果消息为1,但我收到规则For Each i In arfest上的错误(错误运行时13,类型不对应) 如果我也删除了A2上的值,我会检索带有1的msg和前面例子中的相同错误。

enter image description here

Sub dada_click()
    Dim arfest As Variant
    Dim i As Variant
    UR = Sheets("Fest").Cells(Rows.Count, 1).End(xlUp).Row
    If UR < 2 Then UR = 2
    arfest = Sheets("Fest").Range("A2:A" & UR)
    MsgBox (Application.CountA(arfest))
    For Each i In arfest
       Debug.Print i
    Next i
End Sub

出了什么问题?!?!? 感谢

1 个答案:

答案 0 :(得分:1)

在您的范围内只有一个对象,在循环开始时设置一个断点。你会看到arfest是一个单独的日期。没有什么可循环的。这突出了将一切变暗作为变体并让编译器决定变量持有的问题之一。在您的声明中更具体。如果你知道arfest是一个范围,请告诉编译器!同样适用于我。试试这个,看看它是否能解决你的问题:

Sub test()
    Dim arfest As Range
    Dim i As Range
    UR = Sheets("Fest").Cells(Rows.Count, 1).End(xlUp).Row
    If UR < 2 Then UR = 2
    Set arfest = Sheets("Fest").Range("A2:A" & UR)

    For Each i In arfest
       Debug.Print i
    Next i
End Sub

再次,逐步完成我的代码和代码,看看每种情况下如何处理arfest的区别。