• ベストアンサー

メッセージボックスを前面に表示させるには?

Sub 教えて() Dim ExAp As Application Dim ExBk As Workbook Dim ExSh As Worksheet Set ExAp = CreateObject("Excel.Application") Set ExBk = ExAp.Workbooks.Add Set ExSh = ExBk.Worksheets(1) ExAp.Visible = True ExAp.WindowState = xlMaximized ThisWorkbook.Worksheets(1).Activate MsgBox "前面表示させたいお!" Set ExAp = Nothing Set ExBk = Nothing Set ExSh = Nothing End Sub これを実行するとメッセージボックスが隠れてしまいます。 どうしたらよいでしょうか?

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

自身のアプリケーションにフォーカスを持ってくる という方法ですが、2種類、3通りの方法があります。 (1)自身のVisibleを切り替える Application.Visible = False Application.Visible = True MsgBox "前面表示させたいお!" (2)APIを使う方法 (A)WindowsAPIを定義する方法 Declare Function SetForegroundWindow Lib "USER32" _     (ByVal Hwnd As Long) As Long Sub 教えて() SetForegroundWindow Application.Hwnd MsgBox "前面表示させたいお!" End Sub (B)ExecuteExcel4Macroを使う方法 ExecuteExcel4Macro "CALL(""USER32""," _     & """SetForegroundWindow"",""JJ""," _     & Application.Hwnd & ")" MsgBox "前面表示させたいお!" (1)は簡単ですが、タスクバーでの自身のアイコン位置が 最後尾になってしまう弱点があります。 (2)はSetForegroundWindowで自身のアプリケーションに フォーカスを取り戻しています。 (A)は正規のAPI定義手法を使っています。 (B)は以前のAPI呼び出しです。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

他には ': AppActivate Application.Caption >ThisWorkbook.Worksheets(1).Activate などもありでしょうか。 メッセージボックスだけでいいのでしたら CreateObject("WScript.Shell").Popup "前面表示させたいお!", , , vbSystemModal http://msdn.microsoft.com/ja-jp/library/cc364428.aspx もありかもしれません。

koara1982
質問者

お礼

Sub 教えて() Dim ExAp As Application Dim ExBk As Workbook Dim ExSh As Worksheet Set ExAp = CreateObject("Excel.Application") Set ExBk = ExAp.Workbooks.Add Set ExSh = ExBk.Worksheets(1) 'ExAp.Visible = True 'ExAp.WindowState = xlMaximized 'ThisWorkbook.Worksheets(1).Activate MsgBox "前面表示させたいお!" ExAp.Visible = True ExAp.WindowState = xlMaximized Set ExAp = Nothing Set ExBk = Nothing Set ExSh = Nothing End Sub というふうにメッセージボックスをクリックしたら エクセルが表示されるようにしたら自分のしたいことが出来ました。

回答No.2

はじめまして、通りすがると申します。 これなら、どうでしょうか? Dim ExAp As Application Dim ExBk As Workbook Dim ExSh As Worksheet 'Set ExAp = CreateObject("Excel.Application") 'Set ExBk = ExAp.Workbooks.Add 'Set ExSh = ExBk.Worksheets(1) 'ExAp.Visible = True 'ExAp.WindowState = xlMaximized '上記コメントの変わりに下記2行を追加 Dim varRetval As Variant varRetval = Shell("excel.exe", vbNormalNoFocus) ThisWorkbook.Worksheets(1).Activate MsgBox "前面表示させたいお!" Set ExAp = Nothing Set ExBk = Nothing Set ExSh = Nothing

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

下記の「MsgBoxSetForeground」を指定してみたらいかがでしょうか。 http://msdn.microsoft.com/ja-jp/library/139z2azd(VS.80).aspx MsgBox "前面表示させたいお!", vbMsgBoxSetForeground

koara1982
質問者

補足

それをやっても前面に表示されませんOrz

関連するQ&A

専門家に質問してみよう