「vba すべてのシート 行の非表示」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
すべてのワークシートで、特定の行を非表示にするには、Excel VBA(Visual Basic for Applications)で、どのようなコードを書けばいいのかを探していた方による、検索キーワードです。
参考になりそうなマクロをいくつかご紹介しておきます。
全シートで特定の1行を非表示にするサンプルマクロ
以下のようなSubプロシージャで、全シートの1行目を非表示にできます。
Dim sh As Worksheet For Each sh In Worksheets
sh.Rows(1).Hidden = True
Next sh
End Sub
すべてのワークシートに対してFor Each~Nextループを回して、
For Each sh In Worksheets
Rowsプロパティを使って1行目を非表示にしています。
sh.Rows(1).Hidden = True
全シートで連続した複数行を非表示にするサンプルマクロ
以下のようなSubプロシージャで、全シートの1~3行目を非表示にできます。
Dim sh As Worksheet For Each sh In Worksheets
sh.Rows("1:3").Hidden = True
Next sh
End Sub
先ほどの1行目を非表示にするマクロとの違いは、「Rows("1:3")」と、Rowsプロパティの引数に文字列「1:3」を指定して1行目から3行目を取得しているところです。
全シートで離れた複数行を非表示にするサンプルマクロ
以下のようなSubプロシージャで、全シートの1・3・7~10行目を非表示にできます。
Dim sh As Worksheet For Each sh In Worksheets
sh.Range("A1, A3, A7:A10").EntireRow.Hidden = True
Next sh
End Sub
離れた複数行を、指定するために「Range("A1, A3, A7:A10").EntireRow」と、RangeプロパティとEntireRowプロパティを組み合わせたオブジェクト式にしているのがポイントです。
RangeプロパティとEntireRowプロパティの組み合わせに慣れていない方は、以下のSubプロシージャを動かして、全シートの1・3・7~10行目が選択されることを確認しておきましょう。Range("A1, A3, A7:A10").EntireRow.Select
End Sub
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » 全てのシートの行を非表示にするExcelマクロ