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

Jef*_*lle 2 excel vba excel-vba

因此,当我运行这部分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
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何帮助

Sco*_*ner 6

改变这个:

destPpl = destPpl.Offset(0, 1) 
Run Code Online (Sandbox Code Playgroud)

对此:

Set destPpl = destPpl.Offset(0, 1) 
Run Code Online (Sandbox Code Playgroud)

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

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

destPpl的正确声明是:

Dim destPpl as Range
Run Code Online (Sandbox Code Playgroud)

  • 为了进一步解决这个问题,确保始终使用[Option Explicit](https://msdn.microsoft.com/en-us/library/y9341s4f.aspx)将有助于避免将来类似的类型错误:) (4认同)