1. ホーム
  2. vba

[解決済み] ワークシートを1枚飛ばし、残りのワークシートを処理する

2022-02-15 13:10:36

質問

私は、利用可能なすべてのワークシートから、単語 "ステートメント No" を含まないすべての行を削除するvbaコードで作業していました。しかし、とにかく私はそれが最初のワークシートをスキップして、他のすべてのワークシートから行を削除し続けたい。

以下のコードで、最初のワークシートをスキップするように私を助けることができれば。

Sub doit()

Application.DisplayAlerts = False

Dim r As Long, lr As Long
Dim sh As Worksheet



For Each sh In Sheets

lr = sh.Cells(sh.Rows.Count, 1).End(xlUp).row
For r = lr To 1 Step -1
    If InStr(sh.Cells(r, 1), "Statement No") = 0 Then sh.Rows(r).Delete
Next r
Next

Application.DisplayAlerts = True

End Sub

ありがとうございました。

解決方法は?

各シート名をチェックして無視するように指示すればよい。

Sub doit()

    Application.DisplayAlerts = False

    Dim r As Long, lr As Long
    Dim sh As Worksheet

    For Each sh In Sheets
        If sh.Name <> "IgnoreThisSheet" Then
            lr = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
            For r = lr To 1 Step -1
                If InStr(sh.Cells(r, 1), "Statement No") = 0 Then sh.Rows(r).Delete
            Next r
        End If
    Next

    Application.DisplayAlerts = True

End Sub

Edit: For EachループでSheetsをWorkSheetsに変更することもできます。 ワークシートは行や列などを含みます。 シートには、チャートシート、マクロシート、ダイアログシートがあります。 http://blogs.msdn.com/b/frice/archive/2007/12/05/excel-s-worksheets-and-sheets-collection-what-s-the-difference.aspx