MsgBoxでメッセージを表示させる位置は変えられるか?

Question 24.4 Previous Next
このホームページをはじめ、書籍等を調べましたがわからないことがあり、ご質問をさせていただきたく、お願い申しあげます。
<質問内容>
  MsgBoxマクロ(VBA)でメッセージを表示させる位置は、変えられるのでしょうか?
Answer   Copyright (C) 2000.1.27 永井善王
メッセージボックスを表示すると、先に映っていた画面の見たい部分が、隠れてしまう場合があります。表示させる位置を指定することができれば、隠れることを防止できる場合があるでしょう。また、先に映っている画面の関連の深い項目の位置に、表示することも可能になります。
私も以前、そのように思って調べたことがあります。しかし、わからなかったので、今も制御していません。以下の説明は、この回答のために記憶をたどりながら、調べ直してみた内容です。
メッセージボックス
Visual Basic ユーザーズガイド(Excel V5.0)初版のP.270 には、「実際に実行して表示されたダイアログボックスは、組み込みやユーザー定義に関係なく、そのダイアログボックスが直前に表示されたときと同じ位置に表示されます。ただし、プロシージャでダイア録ボックスの表示位置を決めておけば、ダイアログボックスを決まった位置に表示できます。この方法については、この章の「ユーザー定義ダイアログボックスの表示」を参照してください。」と、説明されています。
そこで、P.283~286の「ユーザー定義ダイアログボックスの表示」を見てみたのですが、みつかりませんでした。ひょっとすると、「OnShow イベントプロシージャー」で可能かも知れませんが、よく分かりません。

また、ヘルプの説明では、「ユーザー設定ダイアログボックスを使うためのヒント」に、「ユーザー設定ダイアログボックスが表示される位置を制御することはできません。ダイアログボックスは、直前に表示されたダイアログボックスと同じ位置に表示されます」と言い切っていますし、「組み込みダイアログボックスを表示する」には、それらしい説明はみつかりません。 MsgBox関数で表示されるダイアログボックスは、定義済みダイアログボックスになると思うのですが、表示位置の制御についての説明はみつかりませんでした。
バルーン
あなたがお使いのエクセルのバージョンが不明のため、この回答部分が役立つかどうか心配です。
Excel97以上にある「Officeアシスタント」のバルーンは、左図のように、メッセージボックスと同じように使えます。
そして、バルーンを特定の領域に表示されないようにする SetAvoidRectangleメソッドがありますので、その機能をうまく活用することができれば、解決するかも知れません。

また、本題とは関係ないことですがアシスタントの種類としては、Excel2000では、この図の「ミミー」のほかに「ロッキー」や「冴子先生」など、全部で7つ用意されています。用途に合わせて選ぶと効果的かも知れないし、楽しさも出てくるでしょう。
研究してみてください。

 

Excel VBA Macro