[英]Code not looping through sheets
以下代碼是在第一張紙上刪除太多內容,然后不循環到第二張紙? .FindNext語句上出現錯誤。
Sub FindAndExecute3()
Dim Loc As Range
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
With sh.UsedRange
Set Loc = .Cells.Find(What:="AUTO.WHSE.")
If Not Loc Is Nothing Then
Do Until Loc Is Nothing
Rows(ActiveCell.Row & ":" & (ActiveCell.Row + 2)).Delete
Set Loc = .FindNext(Loc)
Loop
End If
End With
Set Loc = Nothing
Next
End Sub
您必須完全限定Range
。 這個問題一次又一次地出現(例如this )。
這是什么意思? 不要使用Cells
, Range
, Rows
或Columns
而不指定它們屬於哪個Worksheet
,除非您特別想要這樣做(即使在那種情況下,顯式使用ActiveSheet
可以提高可讀性並減少出錯的可能性,類似於使用Option Explicit
) 。 例如,替換
Rows(ActiveCell.Row & ":" & (ActiveCell.Row + 2)).Delete
與
sh.Rows(sh.<something>.Row & ":" & (sh.<something>.Row + 2)).Delete
我假設的Range
要被刪除跨越Row
從相關的東西取號sh
。
注意1 :在這種情況下,即使沒有限定Range
,代碼也會繼續執行,並且錯誤可能會被忽略,因為它會產生有效的結果。 在其他情況下,沒有完全限定的Range
的代碼將引發錯誤(例如,帶有sheet1.Range(Cells(...
,當sheet1
不是ActiveSheet
)。
注意2 :僅當ActiveCell
的Worksheet
為ActiveSheet
[ MSDN ]時,才可以使用ActiveCell
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.