- ベストアンサー
メッセージボックスを前面に表示させるには?
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 これを実行するとメッセージボックスが隠れてしまいます。 どうしたらよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
自身のアプリケーションにフォーカスを持ってくる という方法ですが、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)
他には ': AppActivate Application.Caption >ThisWorkbook.Worksheets(1).Activate などもありでしょうか。 メッセージボックスだけでいいのでしたら CreateObject("WScript.Shell").Popup "前面表示させたいお!", , , vbSystemModal http://msdn.microsoft.com/ja-jp/library/cc364428.aspx もありかもしれません。
- ToOrisugaru
- ベストアンサー率28% (80/280)
はじめまして、通りすがると申します。 これなら、どうでしょうか? 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)
下記の「MsgBoxSetForeground」を指定してみたらいかがでしょうか。 http://msdn.microsoft.com/ja-jp/library/139z2azd(VS.80).aspx MsgBox "前面表示させたいお!", vbMsgBoxSetForeground
補足
それをやっても前面に表示されませんOrz
お礼
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 というふうにメッセージボックスをクリックしたら エクセルが表示されるようにしたら自分のしたいことが出来ました。