所以当我运行这部分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
它将删除第一列内容,但不会遍历其余列。所有表引用都是正确的。我不知道出了什么问题。
感谢您的帮助
答案 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));