【发布时间】:2020-07-02 06:43:30
【问题描述】:
我正在编写我的第一个 VBA 代码,并且有一组复杂的步骤来处理 Excel 中的数据。一切正常,除了这个运行良好,但最后给出错误,我很确定这是因为在数据用尽后的某个时刻,它返回“无”并导致“运行时错误'91':对象变量或未设置块变量”崩溃。我不知道如何解决这个问题。有什么建议么?我确信这很简单——是的,这段代码很慢,但它确实有效。谢谢!
Sub D_GSB_Sort_Data()
Dim MyCell As Range
For Each MyCell In Range("A2:A5000")
ActiveWorkbook.ActiveSheet.Columns(1).Find("*Submitted*").Select
ActiveCell.Offset(0, 3).Cut ActiveCell.Offset(0, 0)
ActiveCell.Offset(1, 1).Cut ActiveCell.Offset(0, 1)
ActiveCell.Offset(2, 1).Cut ActiveCell.Offset(0, 2)
ActiveCell.Offset(3, 1).Cut ActiveCell.Offset(0, 3)
ActiveCell.Offset(4, 0).Cut ActiveCell.Offset(0, 4)
Next MyCell
End Sub
【问题讨论】:
-
您需要先测试
Find是否成功,然后再尝试执行任何其他操作,包括Select。 -
这里使用
Range.AutoFilter可能比Find更容易。 -
如果您已经在范围内循环,则不需要
Find()- 只需使用If MyCell.Value Like "*Submitted *" Then并使用MyCell代替ActiveCell -
我将代码更改为
Sub GSB_Sort_Data() Dim MyCell As Range For Each MyCell In Range("A2:A5000") If MyCell.Value Like "*Submitted*" Then MyCell.Offset(0, 3).Cut MyCell.Offset(0, 0) MyCell.Offset(1, 1).Cut MyCell.Offset(0, 1) MyCell.Offset(2, 1).Cut MyCell.Offset(0, 2) MyCell.Offset(3, 1).Cut MyCell.Offset(0, 3) MyCell.Offset(4, 0).Cut MyCell.Offset(0, 4) Next MyCell End Sub,但现在出现“Next without For”错误 -
您缺少
End If...在Next MyCell之前添加它。