「vba 表示 セル 取得」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスが時折あります。
何を調べていたのか、複数の可能性を考えられる検索です。
1つは、非表示になっている行や列があるときに、表示されているセル(可視セル)のみを取得する方法を調べていらした可能性です。
これについては、Range.SpecialCellsメソッドの引数に定数xlCellTypeVisibleを指定するコードを既にご紹介しています。
他の可能性として、Excelの画面・ウィンドウに表示されているセル範囲を取得する方法を調べていた可能性も考えられます。
例えば、Excelの画面・ウィンドウが下図のようなときに、
表示されているB2:K8セルを表すRangeオブジェクトを取得する方法です。
画面に表示されているセル範囲を取得するサンプルマクロ
以下のExcelマクロを実行すると、表示されているセルを取得し、そのセル番地がメッセージボックスに表示されます。
Dim rng As Range
Set rng = ActiveWindow.VisibleRange
MsgBox rng.Address(False, False)
End Sub
サンプルマクロで行っている処理
Excel VBAのグローバルメンバーであるActiveWindowプロパティを使うと、Excelのウィンドウを表すWindowオブジェクトを取得できます。
ActiveWindowプロパティで取得したWindowオブジェクトに用意されているVisibleRangeプロパティを使うと、
表示されているセル範囲を表すRangeオブジェクトを取得できます。
上記のサンプルマクロでは最後に、Range.Addressプロパティを使ってセル範囲のセル番地を取得して、VBAのMsgBox関数でメッセージボックスに表示を行っています。
最終更新日時:2024-08-21 14:20
Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » VBAで画面に表示されているセル範囲を取得する-Window.VisibleRangeプロパティ