エクセルVBAにて、指定時刻になったらメッセージボックスを、最前面に表示させるプログラムを作成中です。
時刻の指定は、ontimeメソッドの使用でできました。

しかし、最前面(他のアプリケーションを開いていても、メッセージボックスが手前に表示される)がどうしてもできません。。

VBだとAPI関数を使って、フォームを常に最前面表示はできました。

メッセージボックスで、このような表示方法は実現可能なのでしょうか?
どなたか教えて下さい。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

経験ないですけど。



Excelをアクティブにしてから表示したら、最前面には来ないでしょうかね?
⇒他のアプリの後ろとは、そのアプリがアクティブな状態なわけですよね?
    • good
    • 0
この回答へのお礼

>n-junさん
今回は、エクセルをアクティブにしてない状態でも、メッセージボックスを最前面に表示させないといけないのです。。

エクセルをアクティブにしたら最前面には来ます。
そうです。

お礼日時:2009/04/13 21:40

システムモーダルで。


rt = msgbox("メッセージ", vbOKOnly + vbSystemModal)
    • good
    • 3

>VBだとAPI関数を使って、フォームを常に最前面表示はできました。



VBAでもこの方法しかありません。
他のアプリが最前面ではVBAの関知する所ではないので、エクセル上に表示する事しか出来ません。
    • good
    • 0

 こんにちは。



 直接WIN32APIサイドのメッセージボックスを呼び出せば、最前面スタイルを指定出来ます。
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …

 以下では駄目でしょうか?

'プロトタイプ
Public Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long) As Long

'OKボタンを保有するフラグ
Public Const MB_OK = &H0

'最前面フラグ
Public Const MB_TOPMOST = &H40000

'呼び出し
Public Sub TestTopMostMsgBox()

Dim lpText As String
Dim lpCaption As String

lpText = "テスト"
lpCaption = "最前面メッセージボックス"

MessageBox 0, lpText, lpCaption, MB_OK Or MB_TOPMOST

End Sub
    • good
    • 3
この回答へのお礼

APIは調べましたが、まさかこんな方法があるとは。
ありがとうございます!
正に、理想通りの実行結果が得られました。

お礼日時:2009/04/14 22:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q油面の調整分だけストロークはリニアに変化するか?

油面を高くすれば、単純にその分だけフルボトム時のストローク量が少なくなるのでしょうか?

フルボトムだと、その分だけストロークしなくなり、
フルボトム付近も、より動きが硬くなる
と思っています。

いかがでしょうか?アドバイスをお願いします。

Aベストアンサー

おはようございます、時間がないので軽くかきますが
フロントフォークの油面ですね、おおまかにあっているかもしれませんが自分の認識だとこうです
それだとストロークが単純に短くなるというよりはこういう事です。

まずフロントフォークは沈み込む力に対してスプリングだけで反発しているわけではなくて
オイルの残り容量、つまり空気の圧縮によっても反発しているわけです。これ実はこの空気による反発も
サス設計やセッティングの一つとして計算されているはずなんですよ。
ここまではご存知かもしれません

それで油面を変えるという事はそのエア容量を小さくするという事なんです。
エア容積が小さくなるので縮んだ時の空気圧縮反発力が増すという事になりますから、
初期ストロークの頃は空気の特性からあまり反発力が強くアリマセンが
最後の頃にはどんどん反発力が増してきます。
つまり初期や弱い入力に対しては柔らかく強い力や長いストロークに対しては強い反発力が発生する傾向になります
プログレッシブ特性が強くなるという事ですね、固形物でストローク制限しているわけではないので
単純にストロークが減るのではなく入力次第ではストロークが短くなる・・のではないでしょうか

空気ですから強い力を加えればある一定以上に更に縮むでしょうし

おはようございます、時間がないので軽くかきますが
フロントフォークの油面ですね、おおまかにあっているかもしれませんが自分の認識だとこうです
それだとストロークが単純に短くなるというよりはこういう事です。

まずフロントフォークは沈み込む力に対してスプリングだけで反発しているわけではなくて
オイルの残り容量、つまり空気の圧縮によっても反発しているわけです。これ実はこの空気による反発も
サス設計やセッティングの一つとして計算されているはずなんですよ。
ここまではご存知かもしれ...続きを読む

Q添付した画像のようなウィンドウを常に最前面に表示させたいです。

添付した画像のようなウィンドウを常に最前面に表示させたいです。
左には説明動画、右にはボタンでウィンドウ操作(前面表示の切替え、終了など)が
できるものを作りたいです。

そこで質問です。
上に書いたようなことが実現できるプログラムを教えてください。

私は、プログラミングの知識・経験がほとんどはありません。
自分でもどのようなものがあるかは、調べたのですが、絞りきれず質問します。
よろしくお願いいたします。

Aベストアンサー

未経験者がこのサイトで一度質問するだけで
そのようなソフトウェアが作れるようになることはありえません。
もっと参考書や解説サイトに載っているようなもっと簡単な題材から
取り組み始める方がよほど近道です。

Qテニスコート一面分のインドアコートを造るための建物建築費用は?

よく太い金属のパイプのような枠組みでインドアテニスコートの外壁を支えている造りを見ますが、一体どのくらいのコストがかかるのでしょうか。

縦33.77m(コート+10mとしました)×横18.97m(コート+8mとしました)、標準的なテニスコート1面分の面積に対しての建築です。

造った方、お詳しい方、いらっしゃいましたらよろしくお願いします。

Aベストアンサー

聞いた話では、コートが3000万、建物が3000万だと聞きました。

コートは下を1メートルくらいは砂利入れたり、色々するから此のくらいは掛かるようです。コンクリだともっと安く出来るのかも知れませんが、どちらにしても、数十センチは下に掘り下げる必要はあるらしいです。

QVBSで指定した時刻にメッセージを出力したい。

タイトル通りの処理を行いたいのですが、訳あってタスクスケジューラと
フリーソフト等は使用したくないので、VBSでどうにかしたいと思っています。
ちなみにOSはWindows98なのでATコマンドは使えません。

Aベストアンサー

WSH VBScriptでしたら例えば下記のような感じでしょうか。おすすめはフリーソフトを使うことですけれども。
Windows XP SP2で確認しましたがWindows98でも動くと思います。
-----
Option Explicit
Dim WshShell, Alerm
Set WshShell = WScript.CreateObject("WScript.Shell")
Alerm = "5:00" '★ 時刻の指定
While CDate(Alerm)>Time
'WshShell.Popup "ただいま " & Time & " です。",3 '3秒表示
WScript.Sleep 10*1000 '10秒待つ
Wend
WshShell.Popup Alerm & " を過ぎました。",,"時間ですよ",48
-----

Q左足、親指の外側面、人差し指分がずっと感覚が鈍っております。正直いいま

左足、親指の外側面、人差し指分がずっと感覚が鈍っております。正直いいまして、大きな金属のものに左足の甲、ちょうど右側あたり、上下真ん中ほどのところを3週間まえに強打し、感覚がもどらないので医者に行きました。レントゲンをとってもらったものの、骨には異常がない、といわれ、それで終了でした。オーストラリア在住でこちらの医者はどうも助けにならないと判断し、こちらに質問することを決意しました。神経がやはり損傷していると思いますが、治るものなのでしょうか。それともずっとこの鈍い感覚の足で生きていかねばならないのでしょうか。ちなみに打ったところの血管がいつも浮き出ていて、それをさわるとひりひりした感覚に襲われます。アドバイスいただけるとすごくうれしいです。よろしくお願いいたします。

Aベストアンサー

日本の整形外科などのクリニックのホームページにアクセスしメール相談してみるのも1つの手だと思います。おそらく医者は拝見してみないと分からないと返信してくるかもしれません。できることなら、日本にいったん帰国して診てもらうのが一番いいと思います。その方が精神的にも楽になると思います。なんせここは自分も含め素人しかいないと思うので勝手なことは言えません。こんなアドバイスですいません。

Qdelphi6でフォームを常に最前面にするには

delphi6を始めたばかりです
カレンダーを作りました。
そのフォームを、他のアプリケーションがアクティブな場合でも常に最前面にするにはどうすればいいでしょうか。
よろしくお願いします。

Aベストアンサー

Formのプロパティ「FormStyle」を「fsStayOnTop」にしてください。

Q教えて下さい。分電盤2面共 ELBがトリップします

元々一軒家の3階建てですが、共同住宅として使っています。各戸個別のメーターがほしいという事で、2階L-2盤の2次側に増設してあった3階L-3盤に連接で幹線を引き直しました。が、L-2盤の配線で、2階3階と渡っておりどうしても切り離せない回路があり、都合上、その回路をL-3盤に移設しましたが、ブレーカーONでELBが2面共トリップします。どうしてでしょうか?宜しく御願い致します。

Aベストアンサー

2つのELBが漏電を感知した。
全く別回路の場合、回路Aから漏れた電気が回路Bへ流れたとか。
回路Aと回路Bの2次側がつながっているとか。
L-3へ移設したときの結線ミスはありませんか。
1本がL-2へつながりもう1本がL-3へつながっているとか。
単純なミスと思います。
電気工事屋さんへ依頼すべきです。

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

下記、T_商品マスタテーブルにID・商品名共にまったくの
新規(例)ID=6,商品名=自動車が追加された時に、
メッセージボックスで「新規商品が登録されました。」と表示し、
ID=1,商品名=TV(○×社製)が追加された時には、
「IDが重複しています。確認してください。」と表示させるには、
どうしたら良いですか?


T_商品マスタ
 ID 商品名
 1  TV
 2  ラジオ
 3  携帯電話
 4  洗濯機
 5  冷蔵庫

Aベストアンサー

書き方はプログラム言語によります。
フローチャートとしては以下になります。

1.新規追加IDと、既存のIDの全てを比較します。
2.重複したIDが無ければ、メッセージボックスで「新規商品が登録されました。」と表示します。
3.重複したIDがあれば「IDが重複しています。確認してください。」と表示します。

Qテニスコート一面分のインドアコートを造るための敷地面積は?

一体何坪ですか?

前後左右、ボールを追いかけたときに狭さを感じない程度、ダブルスコート、用具収納小屋などは抜きでよろしくお願いします。

経験者、詳しい方のお返事だとうれしいです。

Aベストアンサー

テニスコートの大きさは縦23.77メートル、横10.97メートルです。

実際にプレーする時には少なくとも左右に各2m、奥行きに3mずつは欲しいですから、およそ縦30m横15mの面積が必要で、450平方メートルということになります(インドアだと壁が圧迫感を与えますから、もう少し広さが必要かもしれません)。

さて、1坪は3.3平方メートルですから求める坪数は136.37坪ということになります。

まあ、これは最低ラインということで、左右に1mずつ、奥行きを1mずつ増やせば544平方メートル(164.85坪)必要で、さらに1mずつ増やせば646平方メートル(195.76坪)必要となります。

それと、屋内の場合に注意しなければならないのは天井の高さで、ロビングボールが天井に当たらないようにするためには5mでは厳しくて、8m~10mの高さが必要かと思われます(バレーボールで公認体育館となるためには天井高12.5m以上が必要です)。

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

エクセル2000のVBAでメッセージボックスを表示させたいのですが、OKボタンを押して閉じるのではなく、VBAの記述でメッセージをオープン、クローズがしたいのですが、方法がわかりません。

何がしたいかというと、
FOR~NEXTなどの処理で今何件処理しているかをリアルタイムで表示させたいのです。

どなたか知っている方がいれば教えてください。

Aベストアンサー

フォームを使えばいいのかな、と思います。
Visual Basic Editor のメニューから「挿入」→「ユーザーフォーム」でフォームを追加して、VBA の方は

Dim i As Integer

UserForm1.Show vbModeless

For i = 0 To 100
  UserForm1.ProgressBar1.Value = i
  UserForm1.Label1.Caption = i & "件処理しました。"
Next i

UserForm1.Hide

のような感じで。

私の PC では、コントロールツールボックスの「ツールの選択(かなづちのアイコン)」で「 Microsoft ProgressBar Control 」というのがあったので、これを使って書いてありますが、Office 2000 に入ってたのか Access 2000 に入っていたのか、あるいは他のものに入っていたのかよくわからないので、質問者さんの PC でも使えるかどうかはよくわかりません。

フォームを使えばいいのかな、と思います。
Visual Basic Editor のメニューから「挿入」→「ユーザーフォーム」でフォームを追加して、VBA の方は

Dim i As Integer

UserForm1.Show vbModeless

For i = 0 To 100
  UserForm1.ProgressBar1.Value = i
  UserForm1.Label1.Caption = i & "件処理しました。"
Next i

UserForm1.Hide

のような感じで。

私の PC では、コントロールツールボックスの「ツールの選択(かなづちのアイコン)」で「 Microsoft ProgressBar Control 」と...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング