- ベストアンサー
検索について
前回、QNo.2861578にて質問した物です。 早とちりして、解決としてしまいました。 前回の内容は、エクセル付属の検索と同じ事をマクロで実行したくて、具体的には、”次を検索”という事をしたいです。 前回、教えて頂いた内容で複数を検索することは出来たのですが、”次を検索”というボタンを作るにはどうすればよいのでしょうか? プログラムの途中で止めて、ボタンを押すと次のセルを表示させたいです。 すいません。宜しく御願いします。
- みんなの回答 (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のコードシートに記述してください。
その他の回答 (1)
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。 >プログラムの途中で止めて、 『何も作業をせずに』 >ボタンを押すと次のセルを表示させたいです。 の場合、単純に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メソッドのヘルプを確認してみてください。 引数は都度指定するようにしたほうが良いと思います。
お礼
回答いただいたのに、返信が遅くなってすいません。 使用用途としてzap35さんのほうが近かったのでzap35さんのを使用させていただきました。 pauNedさんのも試させてもらいました。 確かに、メッセージボックスだけですみましたね。 もう少し、頭をやわらかくして組みたいと思います。 返信ありがとうございました。
お礼
返信いただいたのに、返信が遅くなりすいませんでした。 zap35さんのを使わせていただきました。 完成を書き込もうかとも思ったのですが、ほぼzap35さんのままなのでやめておきます。 自分での変更点は、検索をもう一周IF分を追加したのみです。 今はとりあえず、ある程度の理解なのでもう少し時間が出来た時にFoundCell等細かいところを勉強したいと思っております。 このたびは、本当にありがとうございました。