• ベストアンサー

検索について

前回、QNo.2861578にて質問した物です。 早とちりして、解決としてしまいました。 前回の内容は、エクセル付属の検索と同じ事をマクロで実行したくて、具体的には、”次を検索”という事をしたいです。 前回、教えて頂いた内容で複数を検索することは出来たのですが、”次を検索”というボタンを作るにはどうすればよいのでしょうか? プログラムの途中で止めて、ボタンを押すと次のセルを表示させたいです。 すいません。宜しく御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

最初に検索してシートに制御を戻し、再度「次へ」で検索するなら2つのマクロを作成し、変数を引き継ぐのが簡単と思います。 変数値をマクロより前で宣言することで、どちらのマクロからも見えるようにしています。 一度「検索」マクロを動かしてから「次検索」マクロを実行してみて下さい。動作が確認できたらボタンに割り付けると良いでしょう なお変数は面倒でも明示的に宣言される方が良いと思います。 Dim 検索キー As String Dim 検索範囲 As String Dim AdrFirst As String Dim FoundCell As Range Sub 検索() ' 選択 = 1  Test用  ' 検索キー = "AB" Test用  If 選択 = 1 Then   検索範囲 = "C:C"  Else   検索範囲 = "D:D"  End If  With Worksheets("sheet1")   Set FoundCell = Columns(検索範囲).Find(検索キー)   If FoundCell Is Nothing Then    MsgBox 検索キー & "は見つかりません。", vbExclamation   Else    AdrFirst = FoundCell.Address '元のマクロに追加    FoundCell.Select   End If  End With End Sub Sub 次検索()  Set FoundCell = Columns(検索範囲).FindNext(FoundCell)  If FoundCell.Address = AdrFirst Then   MsgBox ("検索は終了しました")  Else   FoundCell.Select  End If End Sub 上記マクロは同じFormのコードシートに記述してください。

koolm
質問者

お礼

返信いただいたのに、返信が遅くなりすいませんでした。 zap35さんのを使わせていただきました。 完成を書き込もうかとも思ったのですが、ほぼzap35さんのままなのでやめておきます。 自分での変更点は、検索をもう一周IF分を追加したのみです。 今はとりあえず、ある程度の理解なのでもう少し時間が出来た時にFoundCell等細かいところを勉強したいと思っております。 このたびは、本当にありがとうございました。

その他の回答 (1)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 >プログラムの途中で止めて、 『何も作業をせずに』 >ボタンを押すと次のセルを表示させたいです。 の場合、単純にLoopさせてはどうですか? Sub sample()   Dim 選択   As Long   Dim 検索範囲 As String   Dim FoundCell As Range   Dim 検索キー   If 選択 = 1 Then     検索範囲 = "C"   Else     検索範囲 = "D"   End If   With Worksheets("sheet1")     .Activate     With .Columns(検索範囲)       Set FoundCell = .Find(検索キー)       If FoundCell Is Nothing Then         MsgBox 検索キー & "は見つかりません。", vbExclamation       Else         Do           FoundCell.Select           If MsgBox("next?", vbYesNo) = vbNo Then Exit Do           Set FoundCell = .FindNext(FoundCell)         Loop       End If     End With   End With   Set FoundCell = Nothing End Sub 見つかる度に何らかの作業して、次を検索する場合はFindメソッドの引数Afterを指定すれば 元のSub 検索()を利用すれば良いと思います。 『検索キー』の内容がわかりませんので何とも言えないですが、 Findメソッドのヘルプを確認してみてください。 引数は都度指定するようにしたほうが良いと思います。

koolm
質問者

お礼

回答いただいたのに、返信が遅くなってすいません。 使用用途としてzap35さんのほうが近かったのでzap35さんのを使用させていただきました。 pauNedさんのも試させてもらいました。 確かに、メッセージボックスだけですみましたね。 もう少し、頭をやわらかくして組みたいと思います。 返信ありがとうございました。

関連するQ&A