运行for循环时出现奇怪的运行时错误'424'

时间:2016-01-25 18:53:17

标签: vba excel-vba excel

所以当我运行这部分vba宏时,我收到一个奇怪的错误。该宏应该通过一个人和他们的信息表,并且GUI中指定的用户,其行被设置为“”之后表格被排序。输入的数据被验证,因此用户不能输入一个不存在的值。

以下是有问题的代码:

    Set destPpl = Worksheets("People").Range("A2")

    Do While (destPpl.value <> I1.value And destPpl.value <> "")
        Set destPpl = destPpl.Offset(1, 0)
    Loop

    For i = 1 To 5
        destPpl.value = "" 'debug error occurs here
        destPpl = destPpl.Offset(0, 1)
    Next i

它将删除第一列内容,但不会遍历其余列。所有表引用都是正确的。我不知道出了什么问题。

感谢您的帮助

1 个答案:

答案 0 :(得分:6)

改变这个:

Set destPpl = destPpl.Offset(0, 1) 

到此:

destPpl

我的猜测是destPpl没有正确地声明为范围,或者你第一次通过循环就会在这一行上得到错误。

正在发生的事情是第一次通过循环destPpl.Offset(0, 1)正在从Range对象更改为.Value的值。所以在第二个循环中,destPpl没有Dim destPpl as Range 限定符,因为它不再是一个范围。

destPpl的正确声明是:

SELECT LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH));