- ベストアンサー
VBAで指定したブックを前面に表示する方法
- VBAを使用して、指定したブックを前面に表示する方法を知りたいです。具体的には、ブックAとブックBがあり、ブックAのマクロの途中でInputBoxでブックBのセルを選択させて処理終了後に再びブックAを前面に表示したいです。
- 現在のコードでは、ブックBが前面に表示されてしまい、処理が終了してしまいます。InputBoxの挙動が関係していると思われますが、原因がわかりません。ExcelのバージョンはOffice365(バージョン 1902)です。
- 要約文章の内容をまとめると、VBAを使用してブックAのマクロの途中でInputBoxでブックBのセルを選択させ、処理が終了後に再びブックAを前面に表示する方法を知りたいです。現在のコードでは、ブックBが前面に表示されてしまい、処理が終了してしまいます。ExcelのバージョンはOffice365(バージョン 1902)です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A、B、両方開いてブックBのセルを選択した後にInputBoxのOKを押した途端にブックAが前面になり、MsgBox "処理完了"が出ます。 途中の処理に何かあるのかもしれません。 MsgBox "処理完了" の前後か ThisWorkbook.Activate の前後に AppActivate Application.Caption を入れてみてはいかがでしょう。 参考にしたサイトのリンクを張っていたのですが、リンクを張ると監査が入って回答が即表示されないサイトだったのでリンクを外して再回答します。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1725/2595)
> 参考サイトのリンクを(時間かかっても構わないので)教えてもらえませんが? 私が検索した語句は vba 前面に表示 で、Googleで上から4つ目にありました。 ExcelVBAで他のアプリを起動したあとに、マクロ動かしてるExcelを手前にもってきたい件 で検索すると一番上に出てくると思います。 URLを以下のような書き方にしたら通るかもしれないので https://qii??.com/ditflame/items/9ca1fb78de4dbba7bc4c ?にアルファベットを入れてください。??=ta
お礼
ありがとうございます!勉強します!
- kkkkkm
- ベストアンサー率66% (1725/2595)
No2の の前後に は の前後のどちらかに です。
- kkkkkm
- ベストアンサー率66% (1725/2595)
2013ですが、質問のコードのままVBEの画面で実行するとVBEに戻りブックBがAより前になっていますが、VBEの画面を非表示にし、ブックAを前面に表示した状態でタブのマクロの実行をするとブックAが最後に前面に来ます。 念のためにブックAのセルを最後に選択するようにしてみてはいかがでしょう。
お礼
早々の回答ありがとうございます。 バージョンによって挙動が変わるのでしょうか・・。
補足
コードの最後に ThisWorkbook.Worksheets(1).Range("A1").Select を加えて、VBE画面を×で閉じて、開発タブのマクロ実行してみましたが、 変わらずブックBが前面に表示されます。 (ちなみにブックAは隠れたままでしたが、想定通りにA1セルが選択されました) 念のため補足ですが、 ブックA、ブックBを両方開いた状態で、マクロを実行しています。
お礼
ありがとうございます! AppActivate Application.Caption で解決しました!
補足
『VBA ブックを前面に』などのキーワードで探したつもりだったのですが見つけられませんでした。 AppActivateは調べてたのですが、ウィンドウ名の指定を誤ったのか うまく動かず。。 Application.Captionで動的に持ってこれるんですね。 もし良ければ後学のため、 参考サイトのリンクを(時間かかっても構わないので)教えてもらえませんが?