エクセル2003を使用しています。
VBAで、下記のように、起動時にメッセージを表示させているのですが、
表示されたダイアログの「OK」を押さないと、ダイアログが消えないのと同時にエクセルの編集ができません。
---------------------
Sub Auto_Open()
MsgBox "******"
End Sub
---------------------
このダイアログを、指定した時間で、自動で消えるようにできるのでしょうか?
ご教授いただけます方、どうぞ、よろしくお願い申し上げます。m(_ _)m
No.7ベストアンサー
- 回答日時:
こんにちは。
>ダイアログに表示される「OK」ボタンを表示しないようにしたいのですが、これは可能でしょうか?
Popup も MessageBoxTimeoutAも、ボタンの表示しない方法はないと思います。そういう場合は、#1の方がご指摘になった、UserForm を代用して使います。たぶん、ラベルなどに、メッセージを書く方法だと思います。
'標準モジュール(UserForm を一つ作る)
'-------------------------------------------
Sub Auto_Open()
Application.OnTime Now() + TimeSerial(0, 0, 3), "CloseUserForm" '3秒後
UserForm1.Show
End Sub
Sub CloseUserForm()
On Error Resume Next 'ユーザーが閉じてしまった場合の想定
Unload UserForm1
On Error Goto 0
End Sub
'-------------------------------------------
ところで、失礼ですが、「薄学」という言葉が気になり、調べてみましたが、辞書にはありません。同じ読みの「博学」という言葉は、逆の意味に近いです。「浅学」とか「寡聞(かぶん)」という言葉がありますが、一度調べてみてください。
できました!
ユーザーフォームを作り、標準モジュールに、ご教授いただきましたものを記述しましたら、理想のものができました!
本当にありがとうございました!
ところで「薄学」の件ですが、私も、変換する際「博学」しかなく、おかしいなと思っておりましたが、知識のないことを「薄学」というと勘違いで思い込んでおりました。以後気をつけます。
こちらの件でも、ご教授ありがとうございました!
No.6
- 回答日時:
WScript.ShellのPopUpメソッドで時間指定しても、VBAでの実行は不安定で使えないんですよね...
...という事で3案。
'標準モジュール
Option Explicit
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 dwMilliseconds As Long) As Long
'---------------------------------------------------------------------
Sub Auto_Open()
test1
'test2
'test3
End Sub
'---------------------------------------------------------------------
Sub test1() 'Cドライブの\tempフォルダを使います。無い場合は適宜変更必要。
Const f = "c:\temp\test.vbs"
Const s = "CreateObject(""WScript.Shell"").PopUp ""3秒後に閉じます。"", 3"
Dim n As Long
n = FreeFile
Open f For Output As #n
Print #n, s
Close #n
Shell "wscript.exe " & f, vbNormalFocus
End Sub
'---------------------------------------------------------------------
Sub test2() 'ttp://scripting.cocolog-nifty.com/blog/2008/01/vba_7c0d.html
MessageBoxTimeoutA 0&, "3秒後に閉じます。", "タイトル", vbMsgBoxSetForeground, 0, 3000
End Sub
'---------------------------------------------------------------------
Sub test3() '簡易的にTextBoxを使う例。UserFormを作ったほうがベター。
Const w As Single = 100 'Width
Const h As Single = 60 'Height
Dim r As Range
With ThisWorkbook
With .Windows(1)
.Zoom = 100
Set r = .VisibleRange
End With
With .ActiveSheet.TextBoxes.Add(r.Left + (r.Width - w) / 2, _
r.Top + (r.Height - h) / 2, _
w, _
h)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Size = 10
.Text = "3秒後に閉じます。"
.Interior.Color = vbYellow
Application.Wait Now + TimeValue("0:00:03")
.Delete
End With
End With
Set r = Nothing
End Sub
No.5
- 回答日時:
ご教授ありがとうございます、感謝いたします。
やっとわかりました。
ただ、マクロを実行すると、ダイアログが表示されるのですが、エクセルファイルを開いたときには変化がなかったので、悩んでおりました。
このマクロを、起動時に実行することは可能でしょうか?
同じ質問内で、複数の質問はしないように怒られそうなのですが、
もしよろしければ、ご教授いただけましたら幸いです。
No.4
- 回答日時:
こんばんは。
そのまま貼り付ければよいだけです。
Sub Auto_Open()
CreateObject("WScript.Shell").Popup "このメッセージボックスは2秒後自動的に閉じます。", 2, "自動的に閉じるメッセージ"
End Sub
なお、このWScipt ヘルプは、Microsoft のサイトに 『Windows Script 5.6 ドキュメント』という名称でダウンロードできます。
ご回答ありがとうございます、うまくいきました。
Sub Auto_Open()
End Sub
がなくて、VBAプロジェクトのどこに貼り付けてもうまくいかなかったのですね、
本当に薄学で申し訳ありません 泣 orz
この方法が、一番簡素で使わせていただきたいのですが、ダイアログに表示される「OK」ボタンを表示しないようにしたいのですが、これは可能でしょうか?
ご存知の方がおられましたら、よろしくお願い申し上げます
No.3
- 回答日時:
こんにちは。
こんな感じですね。
CreateObject("WScript.Shell").Popup "このメッセージボックスは2秒後自動的に閉じます。", 2, "自動的に閉じるメッセージ"
正確に2秒なのかは分かりません。
他の方法もありますが、かなり重装備になってしまいます。
この回答への補足
#2の方のご回答も参照し、ネットでもいろいろ調べましたが、
どこに、どのようにこの構文を記述してよいかがわかりません。
薄学で、申し訳ありませんが、もう少しヒントをいただけないでしょうか?
本当に申し訳ありませんが、よろしくお願い申し上げます。
No.1
- 回答日時:
>このダイアログを、指定した時間で、自動で消えるようにできるのでしょうか?
ご希望の事は不可能です。
どうしてもと言うなら、ユーザーフォームを作成して、タイマー処理でクローズするような物を自分で作るしかありません。
この回答への補足
そうなんですね orz
「ユーザーフォームを作成して、タイマー処理でクローズするような物」
とのことですが、「ユーザーフォーム」はわかったのですが、
「タイマー処理」の記述がわかればご教授いただけませんでしょうか?
申し訳ありませんが、ご教授いただけましたら、よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Excel VBA 自動的に閉じるMsgBox
Excel(エクセル)
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
-
-
4
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
5
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
6
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
7
別のシートから値を取得するとき
Visual Basic(VBA)
-
8
VBScriptでMsgBoxのYesNoボックスを自動的にクリックしたい
その他(プログラミング・Web制作)
-
9
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
10
VBSで応答不要のメッセージボックスを表示したい
その他(パソコン・スマホ・電化製品)
-
11
エクセルマクロ 自動でMSGボックスを閉じてクリッ
Excel(エクセル)
-
12
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
13
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ボタンの表示の色、フォントを...
-
MFCダイアログボックスを最前面...
-
ダイアログの表示位置の保存
-
メッセージボックスのボタン文...
-
ダイアログの上のテキストボッ...
-
ダイアログの一部を半透明化す...
-
【VC++2005】ダイアログサイズ...
-
VC++ MFC エラーコード C2248 ...
-
VC++でダイアログボックスを表...
-
confirmダイアログの表示文字に...
-
コンボボックスのドロップダウ...
-
vbscriptで、ファイル選択ダイ...
-
'int' から 'LPCSTR' に変換で...
-
C# ボタンコントロール内で文字...
-
VBScriptのMsgBoxについて【tit...
-
【MFC】sleep関数を用いたモー...
-
VC(Ver6.0)でダイアログサイズ...
-
DLLから表示しているモーダルダ...
-
エディットコントロールの色の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ボタンの表示の色、フォントを...
-
コンボボックスのドロップダウ...
-
ダイアログの上のテキストボッ...
-
メッセージボックスのボタン文...
-
confirmダイアログの表示文字に...
-
ボタンの配置を変更したい
-
フォーム上のリストボックスに...
-
リソースファイルとは・・・
-
ツールチップの表示
-
MFCダイアログボックスを最前面...
-
ダイアログの表示位置の保存
-
'int' から 'LPCSTR' に変換で...
-
【VC++2005(CLR)】ダイアログ右...
-
vbscriptで、ファイル選択ダイ...
-
エディットボックスの処理で画...
-
ダイアログボックスで指定した...
-
エディットコントロールの色の...
-
【VC++2005】ダイアログサイズ...
-
VC(Ver6.0)でダイアログサイズ...
おすすめ情報