2つのボタンを持つメッセージボックスを表示するにはどうすればよいですか(例:"on"
、"off"
)?
おそらく次のようなことをしたいでしょう:
result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example")
Select Case result
Case vbYes
MsgBox("You chose Yes")
Case vbNo
MsgBox("You chose No")
End Select
アイコンを追加するには:
result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")
その他のアイコンオプション:
vbCritical or vbExclamation
VBScript Messagebox は、ボタンに適用できるラベルに関してかなり制限されています。選択は次のようにほとんど制限されています。
「ON」/「OFF」が必要な場合は、独自のフォームを作成する必要があります
さらに良いことに、上記のオプションのいずれかが機能するように、ボックス内のプロンプトを言い換えないのはなぜですか。
例えば:
Do you want the light on?
[Yes] [No]
そして、神のためにしてはいけないこれらのUIの怪物の1つをしません!
Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
覚えておいてください-ボタンをvbOkOnly
に設定すると、alwaysが1を返します。
したがって、ユーザーが閉じるボタンをクリックしたか、[OK]ボタンをクリックしたかを判断することはできません。 vbOk
オプションを追加するだけです。
それはできます、私はそれをウェブ上のどこかで見つけました...これは私の仕事ではありません! :)
Option Explicit
' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextA" _
(ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
' Handle to the Hook procedure
Private hHook As Long
' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7
Public Sub MsgBoxSmile()
' Set Hook
hHook = SetWindowsHookEx(WH_CBT, _
AddressOf MsgBoxHookProc, _
0, _
GetCurrentThreadId)
' Run MessageBox
MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking"
End Sub
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
SetDlgItemText wParam, IDYES, "Yes :-)"
SetDlgItemText wParam, IDNO, "No :-("
' Release the Hook
UnhookWindowsHookEx hHook
End If
MsgBoxHookProc = False
End Function
msgbox ("Message goes here",0+16,"Title goes here")
ユーザーが決定することになっている場合、変数は次のように追加できます。
variable=msgbox ("Message goes here",0+16,"Title goes here")
中央の数字は、メッセージボックスがどのように見えるかによって異なります。リストはこちら
0-OKボタンのみ
1-OKおよびキャンセル
2-中止、再試行、無視
3-はい、いいえ、キャンセル
4-はい、いいえ
5-再試行してキャンセル
記号を変更するには(右の番号)
16-重要なメッセージのアイコン
32-警告アイコン
48-警告メッセージ
64-情報メッセージ
デフォルトボタン
0 = vbDefaultButton1-最初のボタンはデフォルトです
256 = vbDefaultButton2-2番目のボタンがデフォルトです
512 = vbDefaultButton3-3番目のボタンがデフォルトです
768 = vbDefaultButton4-4番目のボタンがデフォルトです
システムモーダル
4096 =システムモーダル、アラートはすべてのアプリケーションの上に表示されます
注:追加の番号がいくつかあります。すでにそこにある数字にそれらを追加するだけです
msgbox("Hello World", 0+16+0+4096)
from https://www.instructables.com/id/The-Ultimate-VBS-Tutorial/
できません。 MsgBox ボタンは特定の値のみを持つことができます。
このためには、独自のフォームをロールする必要があります。
2つのオプション(はい/いいえ)でMsgBoxを作成するには:
MsgBox("Some Text", vbYesNo)