「VBAでアクティブセルから下の行を非表示にしたい」
という検索が、このサイト・インストラクターのネタ帳で行われていました。
アクティブセルから下の行を非表示にするサンプルマクロ
以下のような1行マクロで、アクティブなセルから下の行を非表示にできます。Range(ActiveCell, Cells(Rows.Count, "A")).EntireRow.Hidden = True
End Sub
サンプルマクロで利用しているオブジェクト式について
一番深いカッコの中から意味を理解しましょう。
Range(ActiveCell, Cells(Rows.Count, "A")).EntireRow.Hidden = True
Rows.Countというオブジェクト式で、アクティブなワークシートの行(Rows)の数(.Count)を取得できます。
2007形式のブックなら「1,048,576」です。
ですから、
Range(ActiveCell, Cells(Rows.Count, "A")).EntireRow.Hidden = True
の、Cells(Rows.Count, "A")は、Cells(1048576, "A")という意味で、A1048576セルを表すRangeオブジェクトを返します。
Rangeプロパティは引数を2つ指定した場合、その範囲の全セルを表すRangeオブジェクトを返しますから、
Range(ActiveCell, Cells(Rows.Count, "A")).EntireRow.Hidden = True
の、Range(ActiveCell, Cells(Rows.Count, "A"))というオブジェクト式は、アクティブセルからA1048576セルのセル範囲を表すRangeオブジェクトを返します。
行の表示・非表示を取得・設定するRange.Hiddenプロパティは、行全体を表すRangeオブジェクトで有効ですから、
Range(ActiveCell, Cells(Rows.Count, "A")).EntireRow.Hidden = True
と、RangeオブジェクトのEntireRowプロパティを使って、アクティブセルからA1048576セルの行全体を表すRangeオブジェクトを取得しています。
- Newer:日数・日付のカウントダウンが行われるように
- Older:Workbooks.Addで作成したブックはどこに?
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » アクティブセルから下の行を非表示にするExcelマクロ