「エクセル マクロ 空白セルの取得」
「if vba 範囲内の空白セルを探す」
「excel vbaで空白セルを探すにはどうすればよいですか?」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがあります。
Excel VBAで空白セルを探すには、どのようなコードを書けばいいのか調べていた方による検索です。
空白セルを検索・選択するサンプルマクロ
空白セルとデータの入力されているセルが混在しているシートがアクティブな状態で、以下のExcelマクロを実行すると、空白のセルだけを取得・選択できます。
Dim rng As Range
Set rng = _
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)
rng.Select
End Sub
For Each~Nextなどのループ処理を考える方も多そうですけれど、その必要はありません。
Range.SpecialCells(xlCellTypeBlanks)で空白セルを取得できる
Excelでは、[選択オプション]ダイアログで「空白セル」オプションを指定すれば、空白セルを選択できます。
この機能をVBAから利用すれば、ループを回さなくても空白セルを見つけられます。
それが、Rangeオブジェクトに用意されているSpecialCellsメソッドに、
XlCellType列挙に定義されている定数xlCellTypeBlanksを引数として指定した、
上記のコードです。
取得を行っているのは、
Set rng = _ ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)
の部分で、取得したRangeオブジェクトに用意されているSelectメソッドで、
rng.Select
選択を行っています。
空白セルの検索・選択で実行時エラーを回避する
上記のSubプロシージャは、空白セルが存在しないときなどに、実行時エラーが発生します。
実行時エラーを回避する場合、以下のようなSubプロシージャです。
On Error GoTo ErrHandl
Dim rng As Range
Set rng = _
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)
rng.Select
ErrHandl:
MsgBox "空白セルが見つかりません。"
Err.Clear
End Sub
空白セルをどの範囲から探すのかは「.SpecialCells」の前で指定
上述のSubプロシージャではアクティブシート上の使われているセル範囲を、WindowオブジェクトのUsedRangeプロパティを使って指定しています。
Set rng = _ ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)
「.SpecialCells」の前Rangeオブジェクトを取得する式を変更すれば、どの範囲から空白セルを探すのか指定できます。
例えば、以下のようなコードにすれば、A1:G7セルの中の空白セルだけを取得できます。
Set rng = _ Range("A1:G7").SpecialCells(xlCellTypeBlanks)
最終更新日時:2024-03-06 06:19
Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » VBAで空白セルを探す-SpecialCells(xlCellTypeBlanks)