Contents
メッセージボックスを表示します。第一引数に表示するメッセージ、第二引数に表示するボタンの種類を指定します。ボタンが押されるまで処理はストップします。処理を止めずメッセージを表示するだけの場合、FUKIDASI関数を使用します。メッセージボックスの表示に制限時間を設定するにはWshShell.Popup メソッドを使います。
右上のバツをクリックした場合、BTN_CANCEL(2)が返ります。
- 構文
- Integer = MSGBOX( メッセージ, 表示ボタン, X, Y, フォーカスボタン, リンクフラグ )
- 引数
- メッセージ (String)必須
- 表示メッセージ
- 表示ボタン (#msgbox = BTN_OK)省略可
- ボタン種別(複数指定可、デフォルトはBTN_OK)
BTN_YES(4)、BTN_NO(8)、BTN_OK(1)、BTN_CANCEL(2)、BTN_ABORT(中止)(16)、BTN_RETRY(再試行)(32)、BTN_IGNORE(無視)(64) - X、Y (Integer = 中央)省略可
- 表示位置 X、Y (デフォルトは中央、 -1,-1にて前回位置)
- フォーカスボタン (#msgbox = BTN_OK)省略可
- デフォルトとしてフォーカスを与えるボタン種別
- リンクフラグ (Boolean = False)省略可
- TRUEにすると http://, mailto: 表記のある部分はリンク形式にする (デフォルト FALSE)
- 戻り値
- 押されたボタン種別
プログラム実行例
受信トレイに新しいフォルダを作成(Outlook)
使用関数
メッセージボックスで処理分岐
CONST olFolderInbox = 6
DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
TRY
Folder.Folders.Add("NewFolder")
EXCEPT
MSGBOX("フォルダを作成できませんでした。")
ENDTRY
使用関数
指定したフォルダを削除
IF MSGBOX("メモ帳を起動しますか?", BTN_YES OR BTN_NO) = BTN_YES THEN EXEC("notepad")
使用関数
指定したフォルダが存在するか
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = Shell.BrowseForFolder(0, "削除するフォルダを選択してください。", 0)
IFB MSGBOX("「" + Folder.Items.Item.Path + "」を削除します。よろしいですか?", BTN_YES OR BTN_NO, , , BTN_NO) = BTN_YES THEN
FSO.DeleteFolder(Folder.Items.Item.Path)
ENDIF
使用関数
一時ファイルの名前を取得
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM FolderName = INPUT("フォルダ名を入力してください。")
IFB FSO.FolderExists(FolderName) THEN
MSGBOX("「" + FolderName + "」フォルダは存在します。")
ELSE
MSGBOX("「" + FolderName + "」フォルダは存在しません。")
ENDIF
結果
rad45437.tmp
使用関数
予定データをExcelから読み込み追加する(Outlook)

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
MSGBOX(FSO.GetTempName)
使用関数
指定したファイルが存在するか
CONST xlUp = -4162
CONST olAppointmentItem = 1
HASHTBL reminders
reminders["なし"] = -1; reminders["0分"] = 0; reminders["5分"] = 5
reminders["10分"] = 10; reminders["15分"] = 15; reminders["30分"] = 30
reminders["1時間"] = 60; reminders["2時間"] = 120; reminders["3時間"] = 180
reminders["4時間"] = 240; reminders["5時間"] = 300; reminders["6時間"] = 360
reminders["7時間"] = 420; reminders["8時間"] = 480; reminders["9時間"] = 540
reminders["10時間"] = 600; reminders["11時間"] = 660; reminders["0.5日"] = 720
reminders["18時間"] = 1080; reminders["1日"] = 1440; reminders["2日"] = 2880
reminders["3日"] = 4320; reminders["4日"] = 5760; reminders["1週"] = 10080
reminders["2週"] = 20160
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
DIM Workbook = Excel.Workbooks.Open("D:\Desktop\予定一覧.xlsx")
DIM MaxRow = Excel.Cells(Excel.Rows.Count, 1).End(xlUp).Row
DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM AppointmentItem = Outlook.CreateItem(olAppointmentItem)
FOR row = 2 TO MaxRow
PRINT row
WITH AppointmentItem
.Subject = Excel.Cells(row, 2).Value // 件名
.Location = Excel.Cells(row, 3).Value // 場所
.Start = Excel.Cells(row, 4).Value // 開始時刻
.End = Excel.Cells(row, 5).Value // 終了時刻
IF Excel.Cells(row, 6).Value = "○" THEN .AllDayEvent = TRUE // 終日
IFB reminders[Excel.Cells(row, 7).Value] <> -1 THEN
.ReminderSet = TRUE
.ReminderMinutesBeforeStart = reminders[Excel.Cells(row, 7).Value] // リマインダー
ELSE
.ReminderSet = FALSE
ENDIF
.BusyStatus = 1 // 公開方法
.Body = Excel.Cells(row, 8).Value // 本文
.Save
ENDWITH
NEXT
MSGBOX((MaxRow - 1) + "件の予定を登録しました。")
Outlook.Quit
Excel.Quit
使用関数
フラッシュ暗算
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = INPUT("ファイルパスを入力してください。")
IFB FSO.FileExists(path) = TRUE THEN
MSGBOX("「" + path + "」は存在します。")
ELSE
MSGBOX("「" + path + "」は存在しませn。")
ENDIF
使用関数
解説
MSGBOXの種別の数値から表示されるボタンを取得
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
DIM grades[] = "20級(初級)", "19級(初級)", "18級(初級)", "17級(初級)", "16級(初級)", "15級(初級)", "14級(初級)", "13級(初級)", "12級(初級)", "11級(初級)", _
"10級(中級)", "9級(中級)", "8級(中級)", "7級(中級)", "6級(中級)", "5級(中級)", "4級(中級)", "3級(中級)", "2級(中級)", "1級(中級)", _
"初段(上級)", "2段(上級)", "3段(上級)", "4段(上級)", "5段(上級)", "6段(上級)", "7段(上級)", "8段(上級)", "9段(上級)", "10段(上級)", _
"11段(超上級)", "12段(超上級)", "13段(超上級)", "14段(超上級)", "15段(超上級)", "16段(超上級)", "17段(超上級)", "18段(超上級)", "19段(超上級)", "20段(超上級)"
DIM keta[] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, _
3, 3, 3, 3, 3, 3, 3, 3, 3, 3
DIM num[] = 3, 3, 5, 8, 10, 12, 15, 20, 10, 15, _
2, 3, 4, 5, 6, 7, 8, 10, 12, 15, _
15, 4, 6, 8, 10, 12, 15, 15, 15, 15, _
15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DIM time[] = 5, 5, 7, 10, 12, 15, 15, 15, 10, 15, _
4, 6, 7, 8, 9, 10, 11, 12, 12, 13, _
10, 4, 5, 6, 7, 8, 8, 6, 4.5, 3, _
2.8, 2.6, 2.4, 2.2, 2.0, 1.9, 1.8, 1.7, 1.6, 1.5
DIM grade = SLCTBOX(SLCT_CMB OR SLCT_NUM, 60, "レベルを選択", grades)
DIM sum = 0
DIM fontsize = 80
DIM fontname = "abacus2"
DIM fontcolor = $00aa00
DIM bgcolor = 1
FOR i = 1 TO num[grade]
DIM n = POWER(10, keta[grade] - 1) + RANDOM(POWER(10, keta[grade]) - POWER(10, keta[grade] - 1))
sum = sum + n
DIM msg = " " + n + " "
FUKIDASI(msg, G_SCREEN_W, G_SCREEN_H,, fontsize, fontname, fontcolor, bgcolor)
DIM ID = GETID(GET_FUKIDASI_WIN)
FUKIDASI(msg, (STATUS(ID, ST_X) - STATUS(ID, ST_WIDTH))/2, (STATUS(ID, ST_Y) - STATUS(ID, ST_HEIGHT))/2,, fontsize, fontname, fontcolor, bgcolor)
SOUND("BEEP")
SLEEP(time[grade])
FUKIDASI()
NEXT
DIM ans = INPUT("答えは?")
IFB ans = sum THEN
MSGBOX("正解です!(ans." + sum + ")")
ELSE
MSGBOX("残念でした、正解は " + sum + " です。")
ENDIF
PROCEDURE forceQuit()
EXITEXIT
FEND
結果
22
----------
キャンセル
はい
中止
使用関数
Internet Explorerが起動しているか
HASHTBL type
type[BTN_YES] = "はい"
type[BTN_NO] = "いいえ"
type[BTN_OK] = "OK"
type[BTN_CANCEL] = "キャンセル"
type[BTN_ABORT] = "中止"
type[BTN_RETRY] = "再試行"
type[BTN_IGNORE] = "無視"
DIM num = INPUT("数値を入力してください。")
IF VAL(num) = ERR_VALUE THEN EXIT
PRINT num
PRINT "----------"
FOR n = 0 TO 6
IF (num AND POWER(2, n)) <> 0 THEN PRINT type[POWER(2, n)]
NEXT
MSGBOX("以下のボタンが表示されます", num)
使用関数
この記事は役に立ちましたか?
ご協力ありがとうございます。
関連記事
- INPUT関数 (スクリプト関数)
- インプットボックスを表示します。
- ChooseColorA(Comdlg32.dll)