Home » ExcelVBA Rangeオブジェクト » セル検索 » Findメソッドの戻り値は?

Findメソッドの戻り値は?

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

Findメソッドの戻り値は?

「cells.find 戻り値」
「エクセル vba find 戻り」
「エクセル マクロ find 返値」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

Excel VBA(Visual Basic for Applications)でセルを検索する際に利用する、RangeオブジェクトのFindメソッドの戻り値(返り値)が、何なのかを調べていた方による検索です。

[スポンサードリンク]

Range.Findメソッドの戻り値はRangeオブジェクト

結論からいえば、オブジェクトブラウザーの詳細ペインに「As Range」と明示されているとおり、

Findメソッドの戻り値は?

Range.Findメソッドの戻りは、Rangeオブジェクトです。

オブジェクトブラウザーを使わなくても、ショートカットキー[Ctrl]+[I]を押すと表示されるクイックヒントでも、下図のようにRangeオブジェクトが返されることを確認できます。

Findメソッドの戻り値は?

(ただしクイックヒントは「.Find」の前のオブジェクト式によっては、表示されないケースもあります。)

Range.Findメソッドの戻りをTypeName関数で確認するサンプルマクロ

Range.Findメソッドに限らず、VBAではTypeName関数を使ってデータ種別を確認できることも、覚えておきましょう。

アクティブなワークシートの、いずれかのセルに「北海道」という文字列を入力しておいて、以下のSubプロシージャを実行してみてください。

Sub Findメソッドの戻りを確認する()
 Dim obj As Object

 Set obj = Cells.Find("北海道")
 MsgBox TypeName(obj)
End Sub

「Dim obj As Object」と総称オブジェクト型で宣言されている、オブジェクト変数・objですが、Rangeオブジェクトであることを表す「Range」という文字列がメッセージボックスに表示されます。

Range.Findは、Rangeオブジェクトを返すメソッドで、その戻りが「Set obj = Cells.Find("北海道")」と、オブジェクト変数・objにセットされているからです。

ちなみに「北海道」と入力されているセルが存在しない場合は、MsgBoxには「Nothing」と表示されます。

これがFindメソッドで該当するセルが見つからなかった場合のエラー回避に使われるNothingです。

Range・Cells・ActiveCellもRangeオブジェクトを返すことを確認しましょう

RangeオブジェクトのFindメソッドを利用する方であれば、Rangeプロパティ・Cellsプロパティ・ActiveCellプロパティは既にご存知のはずです。

Range・Cells・ActiveCellプロパティも、Range.Findメソッドと同じく、Rangeオブジェクトを返すことも、あわせて確認しておきましょう。

Sub Rangeオブジェクトを返すプロパティの確認()
 Dim obj As Object

 Set obj = Range("A1")
 MsgBox TypeName(obj)

 Set obj = Cells(1, 1)
 MsgBox TypeName(obj)

 Set obj = ActiveCell
 MsgBox TypeName(obj)
End Sub

上記のプロシージャを実行すると、「Range」というメッセージボックスが3回表示されます。

Range・Cells・ActiveCellプロパティなどと同じように、RangeオブジェクトのFindメソッドもRangeオブジェクトを返すということを理解しましょう。

また、そもそもVBAからはRangeオブジェクトに用意されているプロパティやメソッドでセルを操作できることも、あらためてイメージしておきましょう。

ちなみにオブジェクト式に書かれているのがオブジェクト名だという誤解をしていると、この記事の内容はまったく理解できないはずですので、まずその誤解を払拭しましょう。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル検索 » Findメソッドの戻り値は?

「セル検索」の記事一覧

検索


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

.