こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
今日は、「セルの住所(番地)を特定する方法」をお伝えします。
こんな人におすすめの記事
- VBAで処理しているセルが「どこ」なのかわからず、探すのが面倒。
- ユーザー(や自分)に対して、「B3セルに入力がありません」のように親切なメッセージを出したい。
- 数式をVBAで埋め込むときに、「$A$1」のような絶対参照と「A1」のような相対参照を使い分けたい。
Addressプロパティとは?どうして必要なのか?
一言で言うと、「そのセルの番地(A1など)を文字として教えてくれる機能」です。
Excelという膨大なデータの中で、「今ここにいます!」と座標を教えてくれるGPSのようなものになります。
例えば、1,000行ある売上データの中に、入力漏れが1つあったとします。
VBAでチェックをして、「エラーがあります」とだけ言われても、「で、どこなのよ…?」となりますよね。
ここで Address を使うと、「セルB458にエラーがあります」とピンポイントで教えてあげられます。これだけで、あなた(やデータを使う同僚)の作業時間は短縮されるでしょう。
基本の使い方
基本はとてもシンプルです。
Range("A1").Address
これだけですが、これだと「$A$1」というふうに、「$(ドルマーク)」がついた状態で返ってきます。
※「$」は絶対参照といって、コピーしてもズレないように鍵をかけるマークです。「$」が邪魔なときは、少しだけコードを足します。
【実践】コピペで使える!未入力セル発見マクロ
これは、「A列のリストを見て、空欄があったらその場所を教えてくれる」というものを紹介します。
Sub FindEmptyCell()
' 変数の宣言
Dim rng As Range
Dim cellAddress As String
Dim foundEmpty As Boolean
foundEmpty = False ' 最初は「見つかっていない」状態
' A1からA10までの範囲を順番に見る
' ※実際のデータに合わせて "A1:A10" は変更してください
For Each rng In Range("A1:A10")
' もしセルが空っぽだったら...
If rng.Value = "" Then
' そのセルのアドレスを取得します
cellAddress = rng.Address(RowAbsolute:=False, ColumnAbsolute:=False)
' メッセージを表示
MsgBox "空欄があります。" & vbCrLf & _
"セル【 " & cellAddress & " 】に入力がありません。", vbExclamation
' 見つかったら選択してあげる
rng.Select
foundEmpty = True
Exit For ' 最初に見つけたところで止める
End If
Next rng
If foundEmpty = False Then
MsgBox "すべて入力されています!", vbInformation
End If
End Sub
コードの解説
上記のコードにある rng.Address(RowAbsolute:=False, ColumnAbsolute:=False) が今回のポイントです。
- RowAbsolute(行の絶対参照): Falseにすると、行番号の前の「$」が消えます。
- ColumnAbsolute(列の絶対参照): Falseにすると、列アルファベットの前の「$」が消えます。
これを設定しないと、「セル【 $A$5 】に入力がありません」と表示されます。
これでも大丈夫ですが、「$」がない方が一般的に馴染みがありますよね。
Addressプロパティは、地味ですが私も実際に使ってみたことで便利さに気づきました。
よければ上記のコードをコピペして、わざと空欄を作って動かしてみてください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント