
No.3ベストアンサー
- 回答日時:
#2の回答者です。
メッセージボックスのMsgBox(MessageBox)は、ユーザーの反応を求めているものだから、その使用中はすべて停止してしまうので、不可能でした。プロセスを別にするにしても、命令をアクセス等からなされたら、それは、アクセスを停止させてしまうことが分かりました。おまけに、Modalモードになってしまいます。あえて、UserForm ではなく、ダミーをHTAで作ってみました。
ダミーではあっても、OKボタンにVBScipt マクロを組み込むことは可能です。
//BUTTON1.HTA//
'---------------------------------------------------
<html>
<head>
<title>DynamicMsgBox</title>
<HTA:APPLICATION
APPLICATIONNAME="DynamicMsgBox"
ID="DynamicMsgBox"
SCROLL="no"
SCROLLFLAT="no"
BORDER="dialog"
VERSION="1.0"/>
</head>
<script language="VBScript">
Sub Window_OnLoad
Dim width,height
width=150
height=150
self.ResizeTo width,height
self.MoveTo (screen.AvailWidth-width)/3,(screen.AvailHeight-height)/2
End Sub
Sub OnClickButtonOK()
Window.Close
End Sub
</script>
<body bgcolor="buttonface">
<table border=0 width=100% height=100%>
<font size="3"> 処 理 中</font>
<tr>
<td align="center">
<input type="button" style="width: 80px" name="OK" id="OK" value="OK" onclick="OnClickButtonOK">
</td>
</tr>
</table>
</body>
</html>
'------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const WM_QUIT = &H10
Sub StartMacro()
'実行マクロ
Dim HTAfile As String
Dim ID As Long
HTAfile = Application.DefaultFilePath & "\BUTTON1.HTA"
ID = Shell("mshta.exe " & HTAfile, vbNormalFocus)
Application.OnTime Now + TimeSerial(0, 0, 10), "Hta_Close"
End Sub
Sub Hta_Close()
'終了用
Dim hwnd As Long
Dim ret As Long
hwnd = FindWindow("HTML Application Host Window Class", vbNullString)
ret = SendMessage(hwnd, WM_QUIT, 0, 0&)
End Sub
No.2
- 回答日時:
あくまでも、メッセージボックスでこだわってみました。
'//
Private Declare Function MessageBoxTimeoutA Lib "user32" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long, ByVal wLanguageId As Long, ByVal dlliseconds As Long) As Long
Sub Test1()
Dim ret As VbMsgBoxResult
ret = MessageBoxTimeoutA(0&, "処理中です。5秒後に消えます!", "messagebox", vbMsgBoxSetForeground + vbOKCancel, 0, 5000)
If ret = vbCancel Then
MsgBox "Cancel が押されました。"
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
VBA ポップアップが表示されたら常に「はい」を選択したい
Access(アクセス)
-
VBScriptでMsgBoxのYesNoボックスを自動的にクリックしたい
その他(プログラミング・Web制作)
-
-
4
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
5
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
-
6
VBAにて別ワークブック上の実行したマクロのメッセージボックスを操作
Visual Basic(VBA)
-
7
Excel VBA 自動的に閉じるMsgBox
Excel(エクセル)
-
8
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
バッチファイルを実行後、終了のお知らせ。
iOS
-
11
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
どこにもフォーカスを当てたくない
Access(アクセス)
-
14
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
15
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
MFCのView終了時の終了確認
-
Application.ScreenUpdating=Fa...
-
Excel VBA で処理中断(DoEvents...
-
メール
-
VBSで応答不要のメッセージボッ...
-
ASP VBScriptでスクリプト実行...
-
sprintf()の使用方法
-
VB6 コマンドボタン クリック...
-
FPS制御について
-
ファンクションキーのキャンセ...
-
イベントハンドラ処理が終了し...
-
EXCEL VBA「Application.Displa...
-
PostMessageの連続送信
-
VCでウエイトをミリ秒でかけ...
-
終了処理について
-
WEB上にボタンが押せない
-
access 確認メッセージのはい/...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
メッセージボックスのボタン名変更
-
VBA kernel32 の意味
-
ACCESS側からEXCELの書式を設定...
-
Application.ScreenUpdating=Fa...
-
Excel VBA で処理中断(DoEvents...
-
エクセルVBAでクリップボード内...
-
VBSで応答不要のメッセージボッ...
-
VBA、UserFormを前面に出力して...
-
【C#】 あるイベントから別イ...
-
【MFC】イベントの無効化について
-
「キャンセル」ボタン付きの処...
-
シャットダウン時のExcel強制終...
-
MFCのワーカースレッドとUIスレ...
-
Excel VBA 実行中に一瞬フリー...
-
Excel(VBA)シート上のコマンド...
-
VB.NETで数秒間msgboxの...
-
サスペンド(休止やスタンバイ...
-
ループを使わずに、特定時間に...
-
起動後直に実行するコードはど...
おすすめ情報