Home » Excel VBA Rangeオブジェクト » セル検索 » Findの検索条件・Whatにセルの値を指定するには

Findの検索条件・Whatにセルの値を指定するには

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

「vba find whatの後をセルにしたい」
「find (what:=の後をセルの値で代入したい」
「vba findでwhatの検索条件をセル番号で指定」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

Excel VBA(Visual Basic for Applications)で、セルの検索を行うRangeオブジェクトのFindメソッドの、検索する文字列を指定する引数・Whatに、

Findの検索条件・Whatにセルの値を指定するには

セルに入力されているデータを利用するには、どのようなコードを書けばいいのかを探している方による検索です。

同じことを調べていた、より具体的な検索キーワードも見られます。

「エクセル マクロ find what部分 a1セルに入力されたもの」
というキーワードは、A1セルに入力された値を、
「find(what 選択したセル」
というキーワードは、選択されているセルの値を検索する方法を、探していらしたのでしょう。

[スポンサードリンク]

変数を利用してセルの値で検索を行うサンプルマクロ

上記のような疑問を持つレベルの方の場合、最初は変数を使ったコードのほうが理解しやすいのではないかと思います。

以下のマクロを実行すると、アクティブセルに入力されているデータを、A列で検索して、みつかった場合には、データが存在する一つ目のセルのセル番地がメッセージボックスに表示されます。

Sub Findの引数Whatをセルで指定する_変数利用()

 Dim txt As String
 Dim rng As Range

 txt = ActiveCell.Value

 Set rng = Range("A:A").Find(What:=txt)
 If rng Is Nothing Then
  MsgBox "見つかりませんでした。"
 Else
  MsgBox rng.Address(False, False)
 End If

End Sub

アクティブセルの値を変数・txtに代入しておいてから、
 txt = ActiveCell.Value
Range.Findメソッドの引数・Whatに変数・txtを指定することで検索を行っています。
 Set rng = Range("A:A").Find(What:=txt)

上記マクロの、
 txt = ActiveCell.Value
の、Rangeオブジェクトを取得するオブジェクト式を変更して、例えば、
 txt = Range("C1").Value
あるいは、
 txt = Cells(1, 3).Value
としてやれば、C1セルに入力されているデータを、A列で検索することができます。

セルの値で検索を行うサンプルマクロ

変数への代入を行わないで、同じことを実行する場合、以下のようなマクロです。

Sub Findの引数Whatをセルで指定する()

 Dim rng As Range

 Set rng = Range("A:A").Find(What:=ActiveCell.Value)
 If rng Is Nothing Then
  MsgBox "見つかりませんでした。"
 Else
  MsgBox rng.Address(False, False)
 End If

End Sub

RangeオブジェクトのFindメソッドの引数・What部分に、先のマクロで変数への代入文の右辺に書いていたオブジェクト式を書けばOKです。

上記マクロの、
 Set rng = Range("A:A").Find(What:=ActiveCell.Value)
の部分を例えば、
 Set rng = Range("A:A").Find(What:=Range("C1").Value)
あるいは、
 Set rng = Range("A:A").Find(What:=Cells(1, 3).Value)
としてやれば、C1セルに入力されているデータを検索してくれます。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » セル検索 » Findの検索条件・Whatにセルの値を指定するには

「セル検索」の記事一覧

検索


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

.