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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて 重複したものがあれば行を削除するとい 1 2023/02/27 18:49
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
- Visual Basic(VBA) vbaエクセルマクロについて RemoveDuplicatesを使わずに、重複行を削除すらマクロを作 3 2023/03/02 22:03
- Visual Basic(VBA) 【VBA】もし、値が0だったら左のセルと合わせて削除したい 3 2023/04/20 10:12
- Excel(エクセル) エクセルファイル中、ゴミ処分の件 2 2022/06/15 19:32
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
VBA ポップアップが表示されたら常に「はい」を選択したい
Access(アクセス)
-
VBAにて別ワークブック上の実行したマクロのメッセージボックスを操作
Visual Basic(VBA)
-
-
4
VBScriptでMsgBoxのYesNoボックスを自動的にクリックしたい
その他(プログラミング・Web制作)
-
5
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
6
Excel VBA 自動的に閉じるMsgBox
Excel(エクセル)
-
7
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
Access 無操作の場合、自動で閉じたいです。
Access(アクセス)
-
10
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
11
VBSで応答不要のメッセージボックスを表示したい
その他(パソコン・スマホ・電化製品)
-
12
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
13
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
14
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
15
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
フォントの大きさ
Visual Basic(VBA)
-
18
ACCESS VBAの実行時エラーなんですが
PowerPoint(パワーポイント)
-
19
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
20
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
エクセルVBAでクリップボード内...
-
Excel VBA で処理中断(DoEvents...
-
VBSで応答不要のメッセージボッ...
-
ACCESS側からEXCELの書式を設定...
-
VBA kernel32 の意味
-
スロットゲームのプログラミング
-
VBA メッセージボックスを自動...
-
vb.netでバッチ処理
-
メッセージボックスのボタン名変更
-
Excel VBA 実行中に一瞬フリー...
-
Application.ScreenUpdating=Fa...
-
VB6 コマンドボタン クリック...
-
InvalidateRectがうまくいかない
-
VC++6.0 CDateTimeCtrl の暴走...
-
VB.NETのUsingキーワードの使い方
-
Excelのワークシートに行を挿入...
-
Excel VBA 自動的に閉じるMsgBox
-
スケジューリング方式
-
処理をとめるキャンセルボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
VBSで応答不要のメッセージボッ...
-
VBA kernel32 の意味
-
エクセルVBAでクリップボード内...
-
【C#】 あるイベントから別イ...
-
Excel VBA で処理中断(DoEvents...
-
VBA メッセージボックスを自動...
-
Application.ScreenUpdating=Fa...
-
Excel VBA 自動的に閉じるMsgBox
-
ASP.NETでのメッセージ画面を出...
-
メッセージBOXの「はい」「いい...
-
「キャンセル」ボタン付きの処...
-
B列に特定の文字列が入っている...
-
シャットダウン時のExcel強制終...
-
ASP VBScriptでスクリプト実行...
-
起動後直に実行するコードはど...
-
MFCのメニューバーのイベント取得
-
アクセスでのキー送信について
おすすめ情報