• ベストアンサー

エクセル「検索と置換」の表示を消すマクロ

cj_moverの回答

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 > エクセルの「検索と置換」を > Application.Dialogs(xlDialogFormulaFind).Show > で出現させて検索の作業をしています。 > 作業後に「検索と置換」の画面をマクロで消したいのですが > どのようなコードになるでしょうか。 問題解決の肝は、 何故or何の為に、「検索と置換」ダイアログを表示させる必要があるのか、 ということになると思いますが、 この点をうまく説明できないでいることも、 解決の糸口を見つけられないでいる原因のようですね。 > 「検索と置換」の画面をマクロで消したい 結論からいうと、残念ながら、そういう機能は用意されていません。 それはExcelやVBAの仕様がどうこうとかいう次元ではなくて、 目的に適ったツール選びが出来ていないのだと思います。 ダイアログというのは概ね、制御を占有して、 ユーザー(の手作業による)操作に応じて、実行したり閉じたりするものです。 制御を占有している、ということは、一連のユーザー(の手作業による)操作 が終って、ダイアログが閉じるまでは、 他の操作やコマンドを割り込んで実行することは出来ない、 ということを意味します。 例えば、 Sub test()   ' ' 前処理   Application.Dialogs(xlDialogFormulaFind).Show   ' ' 後処理 End Sub ↑このプロシージャを実行すると、 "前処理"を実行し「検索と置換」ダイアログを表示しますが、 ユーザー(の手作業による)操作によってダイアログが閉じるまでは "後処理"を実行することは出来ません。 割り込むことが出来ないのは、何もVBAに限った話ではなくて、 「検索と置換」ダイアログを表示している間は、 Excelアプリケーション全体について何も操作出来ませんよね? 例えば、セル範囲を選択する、なんて簡単なことでさえ、出来ないのですから。 なので、もう一度、何をしたいのか、整理した上で、 「検索と置換」ダイアログを表示する以外の手段を検討してみて下さい。 普通に考えると、range.Find メソッド や range.Replace メソッド 等で 対応することになるかと思います。 ダイアログを表示したかった理由が、 ユーザーインターフェイス的なものを求めている、ということだったとすれば、  ・シート上に配置するテキストボックス  ・ユーザーフォーム+テキストボックス  ・application.InputBox 等々、制御を占有することのない(つまり閉じるコマンドを受け取れる) インターフェイスを準備することは可能です。 ここで想定した以外の目的、なのかも知れませんが、 ExcelやVBAの既存の機能を組み合わせていけば、 大抵の要求には応えられるようになっているでしょう。 部分的な方法論というより、全体を俯瞰的に見渡して、 どのようなツールが適しているのか選択することから再検討ですね。 十分な情報が追加されるようであれば、こちらでも検討・アドバイスすることは可能です。 "無いものは作ってしまえ"的に、ダイアログを閉じるようなことは、 出来なくもないかな?と思いますが、それにしても、 いつ閉じるのか、 という(タイミングを取る)トリガーとして何かボタンを押すことになるぐらいなら、 最初から[閉じる]ボタンを押せばいい訳ですから、 "いつ"ダイアログを閉じるのか、とか、 5W1H的な説明をまず、ご自分の中で整理してみたらいいと思います。 例えば、「Enterキーを押したら、閉じる」みたいな要求なら、 シート上やユーザーフォーム上のテキストボックス がお奨め、とか、具体的なニーズに副ったアドバイスなら出来るかも、です。

fukuzawakamon
質問者

お礼

cj_ mover様 ご回答ありがとうございます。 「何故or何の為に、「検索と置換」ダイアログを表示させる必要があるのか」 を考え、改めてお聞きさせていただきます。 ご丁寧にありがとうございました。

関連するQ&A

  • Excelで検索マクロを作りたい

    Excelで検索マクロを作るのに Sub test01() Application.Dialogs(xlDialogFormulaFind).Show End Sub を記述しましたが検索画面で「半角と全角を区別する」にチェックが入ってしまっていますが、チェックがない状態で立ち上げるにはどうしたら良いでしょうか?

  • エクセル マクロ 検索 自動記録できない

    excel2003でマクロを作っていますが、  ファイルを立ち上げたときに自動的にファイル-編集-検索を実行し、 検索画面を起動するようにしたいので、その動作を自動記録しようとするのですが、記録できません。 過去の質問を見て、 Application.Dialogs(xlDialogFormulaFind).Show ↑これを使えば出来ると書いてありましたが、 少し古いエクセルの検索画面で、私が使いたいexcel2003の検索画面ではありませんでした。  どのようにすれば、検索画面をマクロで起動できるのでしょうか。 ご教示いただけますようよろしくお願いします。

  • エクセルVBAでマクロなしのブックでマクロを使う方法

    タイトルが変ですが、こういうことです。 Sub serch() Application.Dialogs(xlDialogFormulaFind).Show ActiveCell.Value End Sub このコードは検索ダイアログを表示するものですが、これをマクロなしの様々なブックで使いたいのです。 何か方法があるでしょうか?

  • エクセル「検索と置換」を閉じるマクロ

    エクセルの「検索と置換」をマクロボタンで閉じることは可能でしようか。 ファイルAとファイルBがあり、ファイルAの中で「検索と置換」の機能を使い検索作業後、マクロボタンでファイルBに移動して入力作業をする。 繰り返し上記の作業をしています。 ファイルBに移動したときに「検索と置換」の画面が不要なためファイルAからファイルBに移動した時点で「検索と置換」の画面を閉じるマクロをファイルAからファイルBに移動するマクロに付け加えたいのですが、「マクロの新しい記録」では記録できませんでした。 宜しくお願いいたします。

  • IMEを制御するマクロについて教えてください

    エクセルを開いて、検索ボタンをクリックするとエクセルの検索ウインドが開くマクロを組みました。 Application.Dialogs(xlDialogFormulaFind).Show それで、この検索ウインドに入力する文字は日本語しか想定してないので、自動的にIMEをデフォルトの半角英数から、ひらがなに変更させるマクロを組みたいのですが、私は全くのド素人のためさっぱりわかりません。 どなたかお手数ですが教えてください。よろしくお願いいたします。

  • エクセル/組み込み検索ダイアローグで初期値の指定は?

    エクセルVBAで、 Application.Dialogs(xlDialogFormulaFind).Show で出てくる検索用の組み込みダイアローグですが、デフォルトで 検索方向を「列」 検索対象を「値」 半角全角を区別しない という設定にしたいのです。 どのように記述すればよいのでしょうか?

  • エクセル 複数シート検索のマクロ

    以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。

  • 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つだけを表示したい。 このような希望を満たすマクロは作成可能でしょうか? おわかりの方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

  • Excel 検索・置換マクロ

    検索する文字列は、AH4のセルにかいている数値とし 置換後の文字列を“無し”にしたいです。 これを実行するマクロを教えてください。 何卒よろしくお願いしますm--m Excel2003

  • 検索マクロの終了について

    台帳からの検索方法として、ご教示いただいた下記のマクロを使用させていただいていますが、検索終了後において、「閉じる」か「×」をクリックし検索を終了させないと先にすすみません。 この、「閉じる」か「×」のクリックをしないで、何処でもセルをクリックすると検索が終了するようには出来ないものでしょうか。 チョッとしたことですが、検索行為の度に、非常に不便に感じております。 どなたか、よろしく、お願いいたします。 Sub Sample1() ' // ダミー検索 ' // MatchByte:全角・半角を区別する Range("A8:C1700").Select ActiveCell.Find What:=ActiveCell.Value, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchByte:=False ' // 検索ダイアログ表示 Application.Dialogs(xlDialogFormulaFind).Show End Sub