• 締切済み

EXCELのメッセージボックスについての質問です

いつもお世話になっております。 EXCELのメッセージボックスの表示される位置は 指定出来るのでしょうか? もし出来るのでしたら、その方法をおしえてください。 宜しくお願いします

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 MsgBox の位置は、以下のようにして設定しますが、あまりお勧めしません。 私などは、レイアウトがきれいに出せるダイアログシートを代用したりしますが、一般的にはUserform がお勧めです。以下のコードは、一応、試験済みですが、バージョンによって達成されないこともありますし、また、Excelがハングするリスクが伴います。 参考: http://support.microsoft.com/kb/180936/ja '<標準モジュール> Type RECT  Left As Long  Top As Long  Right As Long  Bottom As Long End Type Public Declare Function UnhookWindowsHookEx Lib "user32" ( _    ByVal hHook As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias _    "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long Public Declare Function SetWindowsHookEx Lib "user32" Alias _   "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _    ByVal hmod As Long, ByVal dwThreadId As Long) As Long Public Declare Function SetWindowPos Lib "user32" ( _    ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _    ByVal x As Long, ByVal y As Long, ByVal cx As Long, _    ByVal cy As Long, ByVal wFlags As Long) As Long Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd _    As Long, lpRect As RECT) As Long    'Office 2000以下用 Public Declare Function FindWindow Lib "user32" _    Alias "FindWindowA" (ByVal lpClassName As String, _    ByVal lpWindowName As String) As Long Public Const GWL_HINSTANCE = (-6) Public Const SWP_NOSIZE = &H1 Public Const SWP_NOZORDER = &H4 Public Const SWP_NOACTIVATE = &H10 Public Const HCBT_ACTIVATE = 5 Public Const WH_CBT = 5 Public msg_Left As Long Public msg_Top As Long Public hHook As Long Function CBTProc(ByVal lMsg As Long, ByVal wParam As Long, _   ByVal lParam As Long) As Long   If lMsg = HCBT_ACTIVATE Then    'メッセージボックスの位置決め    SetWindowPos wParam, 0, msg_Left, msg_Top, 0, 0, _    SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOACTIVATE    'CBT hookのリリース    UnhookWindowsHookEx hHook   End If   CBTProc = False End Function Public Sub SetMsgBox(Left As Long, Top As Long)  Dim hInstance As Long  Dim ThreadID As Long  Dim hWnd As Long  hWnd = FindWindow("XLMAIN", Application.Caption)  '2002 以上は、me.hWnd で取れる  hInst = GetWindowLong(hWnd, GWL_HINSTANCE)  Thread = GetCurrentThreadId()  msg_Left = Left  msg_Top = Top  HookHandle = SetWindowsHookEx(WH_CBT, AddressOf CBTProc, hInstance, ThreadID) End Sub Sub MsgboxShowLocate()  Dim x As Long  Dim y As Long  x = 0  'MsgBox の横位置  y = 0  'MsgBoxの縦位置  SetMsgBox x, y  MsgBox "(" & x & "," & y & ") の位置に設定されています。" End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

指定は出来ないですね。 常に画面中央です。 位置を指定したいのであれば、独自にメッセージボックスを作ってしまうのがいいかと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メッセージボックスの非モーダル化について

    VB6のメッセージボックスは原則アプリケーションモーダルで表示されますよね? 引数に指定可能なvbApplicationModalの値は0なので非モーダル表示は不可能ではないか?と思います。 しかし、なんらかのトリックを使ってこのメッセージボックスを非モーダル表示させる方法はないものでしょうか? ヒントでも結構なのでよろしくお願いします。

  • エクセル メッセージボックスについて

    入力規則でメッセージボックスを表示するようにしています。 いつも出てくる場所がセルC8辺りなのですが、アクティブセルの近くに表示されるようなことは出来ないのでしょうか? マクロやVBAは、わらないので簡単にできる方法でお願いします。 もし、出来なければ出来ない旨、教えていただけるとうれしいです。 よろしくお願いいたします。

  • VBAにてメッセージボックスを最前面に表示させる

    エクセルVBAにて、指定時刻になったらメッセージボックスを、最前面に表示させるプログラムを作成中です。 時刻の指定は、ontimeメソッドの使用でできました。 しかし、最前面(他のアプリケーションを開いていても、メッセージボックスが手前に表示される)がどうしてもできません。。 VBだとAPI関数を使って、フォームを常に最前面表示はできました。 メッセージボックスで、このような表示方法は実現可能なのでしょうか? どなたか教えて下さい。よろしくお願いします。

  • Excel VBAメッセージボックスの表示位置が右下になってしまう

    ExcelのVBAでメッセージボックスを作成しましたが、 表示される位置がなぜが画面右下の端っこになってしまいます。 通常通り画面中央にメッセージボックスが表示されるにはどうすればよいでしょうか? またこうなってしまった原因はなんでしょうか? VBA初心者です。よろしくお願いします。

  • メッセージボックスの表示位置について

    WindowsAPI(C言語)でメッセージボックスの表示位置を変更したいと思っています。 ダイアログボックスはSetWindowPosで変更できたのですが、メッセージボックスの表示位置が変更できずに困っています。 何か良いAPIや、実装方法などがありましたらご教授ください。 よろしくお願いします。

  • メッセージボックスの再表示の方法

    エクセルでメッセージボックスの再表示方法を教えてください。 メッセージボックスで「今後この表示を表示しない」にチェックを入れてしまい、表示されなくなったのですが、再表示したい思っています。 どのようにしたらよろしいでしょうか? よろしくお願いします。

  • VBAのメッセージボックスで%表示

    お世話になります。 VBAにて、算出されたある数字をメッセージボックスで %表示したいのですが、エクセルシートであれば、表示させる セルを決め、そのセルの表示形式を「パーセンテージ」にすれば いいのですが、メッセージボックスで表示させたいのです。 可能なのかどうか分かりませんが、ご教示頂きたく宜しく お願い申し上げます。

  • VAB:メッセージボックスの色について

    VBAのコードの中で、  MsgBox "めっせーじ" と打つとメッセージボックスが表示されますが、 この時表示されるメッセージボックスの、  ・タイトルバー?の色(XPのデフォルトは青か)  ・タイトル(Microsoft Excelと出ている)  ・背景色(デフォルトは灰色?) を指定することはできますか? Windowsの「画面のプロパティ」だと全てのウィンドウの色が変わってしまいますが、 このコードを実行した時に表示するメッセージボックスだけ変更、という操作は可能でしょうか。

  • メッセージボックスの表示

    エクセル2000のVBAでメッセージボックスを表示させたいのですが、OKボタンを押して閉じるのではなく、VBAの記述でメッセージをオープン、クローズがしたいのですが、方法がわかりません。 何がしたいかというと、 FOR~NEXTなどの処理で今何件処理しているかをリアルタイムで表示させたいのです。 どなたか知っている方がいれば教えてください。

  • Excelメッセージボックス

    改ページプレビューを行なったときに既定値で 表示されるメッセージボックスですが、チェックを入れて「次回から表示しない」にした場合、再度表示されるようにするにはどうしたらよいのでしょうか?

専門家に質問してみよう