【VBA】「エラー箇所がわからない…」を卒業。Addressプロパティで迷子にならないための方法

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

今日は、「セルの住所(番地)を特定する方法」をお伝えします。

こんな人におすすめの記事

  • VBAで処理しているセルが「どこ」なのかわからず、探すのが面倒。
  • ユーザー(や自分)に対して、「B3セルに入力がありません」のように親切なメッセージを出したい。
  • 数式をVBAで埋め込むときに、「$A$1」のような絶対参照と「A1」のような相対参照を使い分けたい。

【業務効率化】VBAの記事を見る

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の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました