2013-03-26 112 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