• 締切済み

excelでマクロが思うように動きません

EXCELでのマクロを使った文字列検索についてお尋ねします。 EXCEL2003のシートにフォームボタンを設置し、そのボタンに 以下のマクロを設定しています。 ここから--------------------------------------------- Sub 検索() Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub ここまで--------------------------------------------- ボタンをクリックすると、検索ダイヤログが開き、任意の文字列を 検索できるのですが、別シートまで検索してしまいます。 【希望1】検索対象をアクティブシートのみにしたい。 表示される“検索ダイヤログ”では、以下項目が設定可能ですが、 1.検索する文字列 2.検索方向 3.対象 4.大文字と小文字を区別 5.完全に同一なセルだけを検索 6.半角と全角を区別 【希望2】変更可能な以下の項目を固定(変更できないように)したい。 2.は“列”に固定 3.は“値”に固定 4.5.6.はチェックボックスでon/offできるようになっていますが、  全てoffに固定 【希望3】出来れば検索ダイヤログには1.の“検索する文字列”欄と、 “次を検索”ボタン、“閉じる”ボタンの3つだけを表示したい。 このような希望を満たすマクロは作成可能でしょうか? おわかりの方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

みんなの回答

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

1)Cells.Selectがなければアクティブシートのみ検索できるのでは? 2)Dialogs(xlDialogFormulaFind)を開かなくてもFINDメソッドで可能です。「ツール」→「マクロ」→「新しいマクロの記録」で検索を実行すれば期待のマクロが得られます。 3)「次を検索」はFINDNEXTメソッドで可能です。 例) Cells.FindNext(After:=ActiveCell).Activate またこれはユーザフォームを作成した方が良いようですね。 VBAヘルプでFINDメソッド使用例を見てみてください。FINDNEXTも含めて例があります。

kamigoogoo
質問者

補足

zap35様 回答ありがとうございます。 Cells.Select や Columns("B:B").Select で検索範囲を指定してあげないと、アクティブセルのみを検索してしまい、結果、「検索条件に一致するデータはみつかりません。」と表示されます。 FINDメソッド、FINDNEXTメソッドについては後ほど実験し、結果を報告させて頂きます。 ありがとうございました。

関連するQ&A