2013-03-26 73 views
0

我对这件事和网站有点新,并且最近遇到了我无法解决的代码错误。我的目标是让我的宏能够将包含短语“Subcontractor:”的任何单元格从列A剪切到列L的单元格,该单元格已被偏移(1,11)。 我的代码允许它这样做,但即使我得到我想要的结果,但提供了错误91.遇到错误“运行时错误91”与“直到”

代码:

Sub SiteAccess() 
Dim mySheet As Worksheet, myOtherSheet As Worksheet, myBook As Workbook 'Define your workbooks and worksheets as variables 
Set myBook = Excel.ActiveWorkbook 
Set mySheet = myBook.Sheets("SiteAccessReports") 

Dim cc As Excel.Range, ee As Long 

Do 
For Each cc In Range("A1:A30000") 'Or whatever yours is 
If cc.Value Like "*SUBCONTRACTOR : *" Then 
cc.Cut Destination:=cc.Offset(1, 11) 
For ee = mySheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 To ActiveSheet.UsedRange.Row Step -1 
If Cells(ee, 1) = 0 _ 
Then Cells(ee, 1).EntireRow.Delete 

    Next ee 
Exit For 
End If 
Next 
Loop Until cc.Value = "***END OF REPORT*** " 'Error Line 

End Sub 

感谢所有帮助我可以得到的。

+1

cc.Value被清除。 cc.Value也是空的,因此会立即发生错误。 – 2013-03-26 09:11:23

回答

0

这是做你想做的,但你需要改进初始范围选择,以确保你没有选择任何空值。循环打报告线年底前

Sub SiteAccess() 
Dim mySheet As Worksheet, myOtherSheet As Worksheet, myBook As Workbook 'Define your  workbooks and worksheets as variables 
Set myBook = Excel.ActiveWorkbook 
Set mySheet = myBook.Sheets("SiteAccessReports") 

Dim cc As Range 

For Each cc In Range("A5:A14") 'Or whatever yours is 

    If cc.Value Like "*SUBCONTRACTOR : *" Then 

     cc.Cut Destination:=cc.Offset(1, 11) 
     Cells(cc.Row - 1, 1).EntireRow.Delete 

    End If 

    If cc.Value Like "***END OF REPORT***" Then Exit Sub 

Next 


End Sub 
+0

感谢您的回答!完美工作(: – user2210690 2013-03-27 00:08:41

+0

)我能否在编码的最后部分获得一些帮助?当您在底部放置“Then Exit Sub”时,我并不真正了解如何在此之后添加额外的命令行同样的子 – user2210690 2013-03-27 00:44:58

+0

该行只是让你脱离子,如果每个命中“END OF REPORT”行,如果你把它拿出来,它应该从每个循环中退出并继续 – 2013-03-27 02:34:12