ITのえんぴつ

Google Blockly開発者ツールやIT・プログラミングを研究して発信するブログ

Excel VBAスニペット: 空白セルが何行目にあるのか探して取得する

Excel VBAを使用して、A列にある空白セルが何行目にあるかを探し、その行番号を取得する方法について解説します。

以下がそのVBAコードです。

Sub 空白セルの行番号を取得する()
    ' エラーハンドリングを設定
    On Error GoTo ErrHandl
    
    ' Rangeオブジェクトを宣言
    Dim blankCell As Range
    
    ' A列の空白セルをループで処理
    For Each blankCell In Columns("A").SpecialCells(xlCellTypeBlanks)
        ' 空白セルの行番号をデバッグウィンドウに表示
        Debug.Print blankCell.Row
    Next

    Exit Sub ' 正常終了

ErrHandl:
    ' エラー情報をクリア
    Err.Clear
End Sub

コードを詳しく解説

空白セルが何行目にあるのか探して取得するコードの詳細は以下の通りです。

  1. On Error GoTo ErrHandl 〜 Exit Sub
    • エラーハンドリング(例外処理)を設定しています。
    • このステートメントは、実行時エラーが発生した時に制御を指定の行ラベルに移動させるものです。エラーが発生した場合、ErrHandl ラベルへジャンプします。
  2. Dim 空白セル As Range
    • セルの範囲を指定する Range 型で「空白セル」という変数名を宣言します。
  3. For Each 空白セル In Columns("A").SpecialCells(xlCellTypeBlanks) 〜 Next
    • For Eachは、反復処理するための ループです。
    • 空白セル はループ内で各セルに対する一時的な変数です。
    • Columns("A") でA列を指定します。
    • SpecialCells(xlCellTypeBlanks) は空白セル(空白または空白文字であるセル)を取得します
    • Next は、ループの終了を示すキーワードです。この行に到達すると、次の空白セルに移動し、繰り返し処理が続きます。
  4. Debug.Print 空白セル.Row
    • 空白セルの行番号をデバッグウィンドウに表示します。
  5. Err.Clear
    • エラー情報をクリアします。
    • クリアしないと、エラー情報はそのまま残っています。次のエラーが発生したことを判断できるように、エラー処理の後でクリアするようにします。
    • Err.Clearを実行すると、Errオブジェクトがクリアされエラー情報は消去されます。

On Error GoTo のエラー処理が必要な理由は、A列に空白セルがないとき、「Columns("A").SpecialCells(xlCellTypeBlanks)」で、「'1004': 該当するセルが見つかりません。」という実行時エラーが発生するためです。

このVBAコードを使用することで、A列にある空白セルの行番号を取得することができます。

参考