更新日:、 作成日:
VBA 行を非表示にする
はじめに
Excel VBA マクロで行を非表示する方法を紹介します。
Rows(2).Hidden または Range("A2").EntireRow.Hidden プロパティから、行「2」を非表示にできます。
Hidden プロパティから、行が非表示になっているか判定できます。
条件に一致するセルがある行を非表示にできます。
行を非表示する
Rows の引数に行番号を指定すると、その行を非表示できます。
行「2」を非表示にするには Rows(2).Hidden = True を入力します。
Rows(2).Hidden = True
Range の引数にセル名を指定すると、そのセルを取得できます。EntireRow からその行を取得できます。
セル「A1」の行を非表示にするには Range("A1").EntireRow.Hidden = True を入力します。
Range("A1").EntireRow.Hidden = True
行を表示する
行を表示するには Hidden = False のように入力します。
Rows(2).Hidden = False
Range("A1").EntireRow.Hidden = False
スポンサーリンク
複数行を非表示する
行の範囲「2 ~ 3」を非表示にするには Range("2:3").EntireRow.Hidden = True または Range("2:2", "3:3").EntireRow.Hidden = True を入力します。
' 2 ~ 3 行目を非表示
Rows("2:3").Hidden = True
Range("2:3").EntireRow.Hidden = True
Range("2:2", "3:3").EntireRow.Hidden = True
Range(Rows(2), Rows(3)).Hidden = True
Range("A2:A3").EntireRow.Hidden = True
Range("2:3") でも行「2 ~ 3」を取得できますが Range("2:3").Hidden = True と入力するとエラーになります。EntireRow を付ける必要があります。
行が非表示になっているか判定する
Hidden が True なら非表示になっています。
' 1 ~ 10 行目で非表示になっている行を取得する
Dim c As Range
Dim row As Long
For row = 1 To 10
If Rows(row).Hidden = True Then
' 非表示になっている
If c Is Nothing Then
Set c = Rows(row)
Else
Set c = Union(Rows(row), c)
End If
End If
Next
Debug.Print(c.Address)
Union を使用すると、指定した 2 つのセルを組み合わせた範囲を取得できます。
非表示になっている行をすべて取得しています。
条件に一致するセルの行を非表示にする
Range.Find メソッドやセルをループして条件に一致するセルの EntireRow から行を取得して非表示にできます。
別シートの行を非表示する
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。
' Sheet1 の行を非表示
Worksheets("Sheet1").Rows(1).Hidden = True
Worksheets(1).Rows(1).Hidden = True
' Sheet2 の行を非表示
Worksheets("Sheet2").Rows(1).Hidden = True
Worksheets(2).Rows(1).Hidden = True
Sheet1 に Rows を入力すると、自身のシートの行になります。自身を表す Me. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = Me.Rows(1)
標準モジュールに Rows を入力すると、開いているシートの行になります。アクティブシートを表す ActiveSheet. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = ActiveSheet.Rows(1)
スポンサーリンク