VBAで指定したブックを前面に表示する方法

このQ&Aのポイント
  • VBAを使用して、指定したブックを前面に表示する方法を知りたいです。具体的には、ブックAとブックBがあり、ブックAのマクロの途中でInputBoxでブックBのセルを選択させて処理終了後に再びブックAを前面に表示したいです。
  • 現在のコードでは、ブックBが前面に表示されてしまい、処理が終了してしまいます。InputBoxの挙動が関係していると思われますが、原因がわかりません。ExcelのバージョンはOffice365(バージョン 1902)です。
  • 要約文章の内容をまとめると、VBAを使用してブックAのマクロの途中でInputBoxでブックBのセルを選択させ、処理が終了後に再びブックAを前面に表示する方法を知りたいです。現在のコードでは、ブックBが前面に表示されてしまい、処理が終了してしまいます。ExcelのバージョンはOffice365(バージョン 1902)です。
回答を見る
  • ベストアンサー

VBAで指定したブックを前面に表示するには

ブックAとブックBがあります。 ブックAのマクロの途中、InputBoxでブックBのセルを選択させて 処理終了後に再びブックAを前面に表示するには どうしたら良いでしょうか? 下記コードを実行したところ、 ブックBが前面になって終了してしまいます。 InputBoxの挙動が関係している気がするのですが、原因がわかりませんでした。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub テスト() '※このマクロはブックAに書かれてます Dim rng As Range On Error Resume Next Set rng = Application.InputBox( _ Prompt:="ブックBのセルを選択してください。", _ Type:=8) On Error GoTo 0 If rng Is Nothing Then Exit Sub '~ '~ ここで処理をする '~ MsgBox "処理完了" ThisWorkbook.Activate 'ここでブックAを前面に出したい End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ExcelはOffice365(バージョン 1902)です。 よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.2

A、B、両方開いてブックBのセルを選択した後にInputBoxのOKを押した途端にブックAが前面になり、MsgBox "処理完了"が出ます。 途中の処理に何かあるのかもしれません。 MsgBox "処理完了" の前後か ThisWorkbook.Activate の前後に AppActivate Application.Caption を入れてみてはいかがでしょう。 参考にしたサイトのリンクを張っていたのですが、リンクを張ると監査が入って回答が即表示されないサイトだったのでリンクを外して再回答します。

fxgame1224
質問者

お礼

ありがとうございます! AppActivate Application.Caption で解決しました!

fxgame1224
質問者

補足

『VBA ブックを前面に』などのキーワードで探したつもりだったのですが見つけられませんでした。 AppActivateは調べてたのですが、ウィンドウ名の指定を誤ったのか うまく動かず。。 Application.Captionで動的に持ってこれるんですね。 もし良ければ後学のため、 参考サイトのリンクを(時間かかっても構わないので)教えてもらえませんが?

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.4

> 参考サイトのリンクを(時間かかっても構わないので)教えてもらえませんが? 私が検索した語句は vba 前面に表示 で、Googleで上から4つ目にありました。 ExcelVBAで他のアプリを起動したあとに、マクロ動かしてるExcelを手前にもってきたい件 で検索すると一番上に出てくると思います。 URLを以下のような書き方にしたら通るかもしれないので https://qii??.com/ditflame/items/9ca1fb78de4dbba7bc4c ?にアルファベットを入れてください。??=ta

fxgame1224
質問者

お礼

ありがとうございます!勉強します!

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.3

No2の の前後に は の前後のどちらかに です。

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.1

2013ですが、質問のコードのままVBEの画面で実行するとVBEに戻りブックBがAより前になっていますが、VBEの画面を非表示にし、ブックAを前面に表示した状態でタブのマクロの実行をするとブックAが最後に前面に来ます。 念のためにブックAのセルを最後に選択するようにしてみてはいかがでしょう。

fxgame1224
質問者

お礼

早々の回答ありがとうございます。 バージョンによって挙動が変わるのでしょうか・・。

fxgame1224
質問者

補足

コードの最後に ThisWorkbook.Worksheets(1).Range("A1").Select を加えて、VBE画面を×で閉じて、開発タブのマクロ実行してみましたが、 変わらずブックBが前面に表示されます。 (ちなみにブックAは隠れたままでしたが、想定通りにA1セルが選択されました) 念のため補足ですが、 ブックA、ブックBを両方開いた状態で、マクロを実行しています。

関連するQ&A

  • ExcelのVBA、セルについて教えて下さい

    セル内容の比較についてのマクロで教えてください。 まずブックAとブックBという2つのワークブックがあります。 ブックAのD4セルにはS144A03といったよな数字と英語が入っています。 ここからが行いたいことなのですが ブックAでマクロ実行 ⇒ ブックBを開きシートAを選択 Application.InputBoxでブックBのシートA内のセルを選択してOKを押した時 ブックAのD4セルの内容とApplication.InputBoxで選んだセルの内容が同じなら”認証OK” 違う場合は”認証NG”とMsgBoxで表示されるようにしたいです。 認証後はどちらの結果であってもブックBの方は閉じてしうまう形にしたいです。保存の確認はいりません。 ご指導のほどよろしくお願いします。

  • ブックの終了がうまくいきません

    Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub

  • Excel VBA 超初心者 困っています。

     Excelで見積書を作成しています。  マクロでページを追加できるようにしたいのですが、貼り付け先のセルを指定する方法をインターネットで探しながら作ってみると  実行時エラー1004 Range クラスの PasteSpecial メソッドが失敗しました。 となります。  ワークシートを指定すればいいのかなと思いますが、どういう風に指定するのかがわかりません。    どうか、教えてくださいませんでしょうか。宜しくお願いします。 Sub 頁追加() ActiveSheet.Unprotect ActiveSheet.Range("A42:AZ84").Copy Dim a As Range Set a = Application.InputBox( _ Prompt:="セル範囲を選択してください", _ Title:="セル選択ダイアログ", _ Type:=8) a.PasteSpecial Application.CutCopyMode = False EndSec: Set Rng = Nothing ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

  • VBAのinputboxで何もいれずに[OK]を押した時エラーになります

    よろしくお願い致します。 EXCELのVBAで「inputbox」を使ってセルを選択させたいと考えております。 下記のコードだと「キャンセル」や「×」で閉じられた時はmsgbox「キャンセル」が出てExit subするのですが、何も入力しないで「OK」を押した場合がどうしてもエラー(入力した数式は正しくありません)になります。 いろいろ調べて試したのですがどうしてもできず困っています。 どなたか教えてください。 Sub test() Dim myAns As Range On Error Resume Next Set myAns = Application.InputBox(Prompt:="セルを選択してください。", Title:="セル選択", Type:=8) On Error GoTo 0 If myAns Is Nothing Then MsgBox "キャンセル" Exit Sub ElseIf myAns = "" Then MsgBox "最低1つは選択してください" Exit Sub Else MsgBox myAns.Address(0, 0) End If End sub

  • VBAでファイルを保存せずに閉じた後の他ブックの挙動

    初めて質問させていただきます。 VBA初心者の為、質問自体に不足があるかもしれませんが、ご協力をお願い致します。 エクセル2000(SP3)で複数のブック(仮にA.xls,B.xlsとします)を起動した状態で、Aをマクロを使って保存せずに終了させたところ、Bの操作が出来なくなります。(セル選択等もできません。Bのsheetを選択するとアプリケーションエラーになってしまいます) 同Windows上に他アプリケーションが起動している場合、それらを一度選択してから再度Excelを選択すると、Bの操作が可能になります。 保存せずに終了させる為のマクロは次のとおりです。 ブックAのThisWorkbook内に記述しています。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Workbooks.count = 1 Then Application.DisplayAlerts = False Application.Quit Else ThisWorkbook.Close SaveChanges:=False End If End Sub 以上、よろしくお願い致します。

  • VBAで、選択範囲の合計を表示するマクロを作りたい

    あるセル範囲(例えばB1:G1)にそれぞれ数値が入力されていたとします。 入力ダイアログでその範囲を指定し、その範囲内の数値の合計値を表示するマクロを作りたいのですが、やり方が分かりません。 セル範囲を入力させるプログラムはこれで合っていますか? Sub セル範囲の合計() Dim 範囲 As Range 範囲 = appllication.InputBox(prompt:="セル範囲は?", Title:="セル範囲", Type:=8) End Sub ここからどのように変えればいいでしょうか?

  • Excel-VBAでアプリケーションエラー

    現在、Excel-VBAで作成されたマクロの保守を行っております。 このマクロで現在、アプリケーションエラー(問題が発生したため、Microsoft Excelを終了します。・・・)が発生しています。処理の内容を調べると、以下の通りです。 (1)ブックAのマクロで、ブックBを開く (2)ブックAで、自ブックをクローズする。 (3)アプリケーションエラーが発生。 (4)(3)の時点では、ブックBのみ開いており、アプリケーションエラーのダイアログで、Excelを再起動をチェックし、「送信しない」を選択するとブックBが一旦閉じられ、その後ブックBが開かれる。 →したがって、異常終了しているのは、ブックBと想定される。 この事象を回避する方法をどなたかご存じありませんでしょうか?

  • エクセルVBA初心者です

    参考書籍を教えてください 質問1 会社でエクセルマクロを使う機会が増えました。大抵のことはマクロの記録で対応してますが、細かいファイル操作が出来ません。VBAを勉強する必要があると思ってます。何か良い参考書はありませんか? 質問2 ブックAでマクロAを作りました。マクロAの中で、ブックBのマクロBを実行させてます。マクロBは、計算結果としてブックB上に新シートを作成し、終了します。その後、マクロAに戻りブックBの新シート上のセル2個を選択しコピーし、ブックAにてペーストさせようとしてます。 マクロAはブックA上で「マクロの記録」で作成しました。 実行させると、マクロBの終了時点でストップするようです。 何がマズイのでしょうか?

  • EXCEL VBA におけるブック終了後の値の保存方法について

    EXCEL VBAについて質問があります。もしかしたら初歩的なことかもしれませんがよろしくお願いいたします。 まず、 Sub Test() Dim i As String i = InputBox("好きな果物を入力してください") Sheets("Sheet1").Range("A1").Value = i End Sub を実行し、ブックを保存して終了する。 ブックを開く Private Sub Workbook_Open() Dim k As String k = Sheets("Sheet1").Range("A1").Value If k = "みかん" Then MsgBox ("a") Else: MsgBox ("b") End If End Sub この処理を Sheets("Sheet1").Range("A1").Value = i というシート上のセルに値を保存するという方法を取らずに iの値をブック終了後もプロシージャ内に持っておくというのは可能なのでしょうか。 Publicで宣言してもブックを一度閉じると やっぱりiの値は保存されませんでした。 どうぞよろしくお願いいたします。

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

専門家に質問してみよう