Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » 可視セルのみをFor Each~Nextループで処理する

可視セルのみをFor Each~Nextループで処理する

動作検証バージョン:Windows版Excel(バージョン1909 ビルド12026.20264)

「VBA 可視セル Each」
「excel vba 可視セルのみ処理 each」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へ時折アクセスがあります。

[スポンサードリンク]

Excel VBAで見えているセル(可視セル)を、For Each~Nextループで処理するには、どのようなコードを書けばいいのかを探していた方による検索です。

可視セルをFor Each~Nextループで処理するサンプル

以下のSubプロシージャが参考になるはずです。

Sub アクティブシートの可視セルのみFor_Eachループで処理する()
 Dim rng As Range
 For Each rng In ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
  rng.Select
  MsgBox rng.Address(False, False)
 Next
End Sub

上記のSubプロシージャを実行すると、アクティブなシートの使用されているセル範囲で、可視セルだけが順番に選択され、そのセル番地がメッセージボックスに表示されます。

可視セルをFor Each~Nextループで処理するサンプルについて

例えば、
  For Each rng In Range("A1", "G7")
といったFor Each~Nextループを回せば、A1:G7セルに対する処理が可能です。
このコードの「In」の後ろを、可視セルを表すRangeオブジェクトを取得する式にすれば、可視セルだけにFor Each~Nextループ処理を行うコードになります。

具体的には、Rangeオブジェクトに用意されているSpecialCellsメソッドの引数Typeに、

XLCellType列挙型に定義されている定数xlCellTypeVisible(実際の値は12)を指定すれば、

可視セルを表すコレクションとしてのRangeオブジェクトを取得できます。

SpecialCellsメソッドを適用するRangeオブジェクトを取得するコード(「.SpecialCells」の前)は、どの範囲の可視セルを処理したいのかによって変える必要があります。

上記のSubプロシージャでは、Worksheet.UsedRangeプロパティで使われているセル範囲を表すRangeオブジェクトを取得しています。

最終更新日時:2019-10-09 12:06

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » 可視セルのみをFor Each~Nextループで処理する

「SpecialCellsメソッド」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.