[[20120916042621]] 『エクセル 2010 VBA マクロ セル内 検索  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセル 2010 VBA マクロ セル内 検索

A列内より、B1セル内に入力した語句を検索できるような、マクロのコードをお分かりになる方は是非ご教授ください。
コマンドボタンを作成し、そのボタンを押すとB1セル内の語句をA列内より検索できるようにしたいです。

検索対象がみつかれば、B1セル内の語句は削除、そしてその語句のある行を選択できるようにしたいです。

例えば画像のように、B1セル内に「い」と入力し、コマンドボタン押下で、B1セル内の「い」は削除され、A列3行目が選択されるというような具合です。

B1セル内の検索対象がA列に存在しない場合は、エラー値が返されメッセージボックスに「該当なし」と表示され、メッセージボックスを閉じると
B1セル内の文字は自動的に削除され、B1セル内が再度選択されている状態になり、そのまま語句を入力できるというような形にしたいです。

※検索の際、大文字、小文字の区分なく検索対象をみつけれるようなマクロのコードがあればベストです。』(みっちゃん)


Option Explicit

Sub test()

    Dim y As Long
    Dim x As Integer
    Dim Obj As Object

    Set Obj = Worksheets("Sheet1").Range("A:A").Find(Range("B1").Value)
    If Obj Is Nothing Then
        MsgBox "該当なし。"

        Range("B1").Value = ""
        Range("B1").Select
    Else
        y = Obj.Row
        Rows(y).Select
        Range("B1").Value = ""

    End If

End Sub

(ドカ)


 FindとReplaceメソッドは、ちょっとクセがある部分有り留意が必要。

 以下はヘルプからの抜粋

 >引数 LookIn、LookAt、SearchOrder、および MatchByte の設定は、このメソッドを使用するたびに保存されます。
 >次にこのメソッドを使用するときにこれらの引数の指定を省略すると、保存された設定が使用されます

 つまり、マクロ処理、シート上での検索、置きかえ操作にかかわらず、指定がない場合、これらの情報は
 「前回のものを引き継ぐ」この中でLookAt以外は、通常の使い方であれば特に気にしなくてもいい場合が
 多いけど、(特殊な検索の場合LookInも重要な意味を持つことがある)、少なくともLookAtは、完全一致か
 部分一致かを規定するので必ず明示的に宣言しておくべき。

 もう1つ、Afterを省略すると、指定領域の最初のセルとなり、通常は、省略して使う場合が多いけど
 「最初に見つかったものから順番に処理」という要件があった場合、省略すると、「領域の2番目のもの」が
 最初に見つかる場合がある。つまり、After は 文字通り 「次から」といいう意味で、A列に対して、省略すると
 After:=Range("A1") 。これで一見いいように見えるけど、この検索は「A2」から始まる。
 なので、もしA1に、その値があっても、それは(最初の検索では)ひっかからない。
 じゃぁ、どうするかというと、2010の場合は A1048576 を Afterに指定する。そうしておけば、
 実際の検索が、「その次のセル」つまり、A1から実行してくれる。

 また、要件では「A列3行目が選択」、つまり 3行目ではなく A3 を選択させたいということなので、
 それやこれやをドカさんのコードに加味すれば以下かな。

 Sub test2()

    Dim Obj As Object

    Set Obj = Worksheets("Sheet1").Range("A:A").Find(What:=Range("B1").Value, LookAt:=xlWhole, After:=Range("A" & Rows.Count))

    If Obj Is Nothing Then
        MsgBox "該当なし。"
        Range("B1").Select
    Else
        Obj.Select
    End If

    Range("B1").ClearContents

 End Sub

 (ぶらっと) <-記述忘れたので追記

(ドカ)様 (ぶらっと) 様
できました☆みなさん丁寧に教えていただき、感謝です!
ありがとうございました^^
みっちゃん

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.