簡體   English   中英

代碼不遍歷工作表

[英]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 )。

這是什么意思? 不要使用CellsRangeRowsColumns而不指定它們屬於哪個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 :僅當ActiveCellWorksheetActiveSheet [ MSDN ]時,才可以使用ActiveCell

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM