仕事で未だに使うことのあるを改めて体系的に学びたく
を読んでいく。
目次
3. VBAの基礎文法
3.3 条件分岐とループ処理
3.3.3 ループ処理
ループ処理の3つ目として、 ステートメントがある。
それには
- : 条件式がである限り処理を続ける
- : 条件式がである限り処理を続ける
がある。
' 条件式がTrueである限り、処理を続ける 'Do while 条件式 ' 条件式がTrueである限り実行 ' 繰り返したい処理 'Loop 'Do Until 条件式 ' 条件式がFalseである限り実行 ' 繰り返したい処理 'Loop Do while ActiveCell.Value <> "" ActiveCell.Next.Value = "〇" ActiveCell.Offset(1).Select ' アクティブセルを今より1行下のセルに更新する Loop
また条件式はキーワードの後ろに置くことができ、その場合、少なくとも1回処理が行われることになる。
3.4 実行時にユーザーと対話する
3.4.1 メッセージボックスでメッセージを表示する
メッセージボックスを表示するには関数を用いる。
'MsgBox 表示する文字列 MsgBox "Hello VBA!!"
選択肢を表示させたい場合、関数に引数を与える。
MsgBox Prompt:="犬の方が猫よりも好きですか?", Buttons:=vbYesNo, Title:="質問"
引数 |
指定できる内容 |
---|---|
表示する文字列 | |
表示するボタンの種類 | |
ダイアログ上端に表示するタイトル |
には対応する列挙の定数を指定する。
戻り値はボタンに応じた値が列挙のいずれかの形で返される。
Dim result As VbMsgBoxResult ' VBAでは戻り値を変数に格納したり利用したりするには引数全体を()で括る result = MsgBox("犬よりも猫が好きですか?", Buttons :=vbYesNo) If result = vbYes Then MsgBox "猫の方が好きなのですね" Else MsgBox "犬の方が好きなのですね" End If
名前 |
表示ボタンの組み合わせ |
---|---|
「OK」 | |
「OK」「キャンセル」 | |
「中止」「再試行」「無視」 | |
「はい」「いいえ」「キャンセル」 | |
「はい」「いいえ」 | |
「再試行」「キャンセル」 | |
名前 |
表示アイコン |
警告メッセージ | |
問い合わせメッセージ | |
注意メッセージ | |
情報メッセージ | |
名前 |
デフォルトボタン |
1番目のボタンをデフォルトとする | |
2番目のボタンをデフォルトとする | |
3番目のボタンをデフォルトとする | |
4番目のボタンをデフォルトとする | |
名前 |
その他 |
アプリケーションモーダルに指定 | |
システムモーダルに指定 | |
「ヘルプ」ボタンを表示 | |
最前面のウィンドウとして表示 | |
右寄せで表示 | |
右から左へ表示 |
名前 |
説明 |
値 |
---|---|---|
「OK」ボタン | ||
「キャンセル | 」ボタン | |
「中止」ボタン | ||
「再試行」ボタン | ||
「無視」ボタン | ||
「はい」ボタン | ||
「いいえ」ボタン |
3.4.2 インプットボックスで値を入力してもらう
インプットボックスを表示してユーザーに任意の値を入力してもらい、その値をマクロで利用するには関数を用いる。
' 変数=InputBox(表示する文字列) Dim result As String result = InputBox("商品名を入力してください") Debug.Print "入力値:", result
引数 |
説明 |
---|---|
表示する文字列 | |
タイトル。ダイアログ上端に表示するタイトル文字列 | |
デフォルト値。入力欄に最初から入力させる文字列 |
3.4.3 セル範囲を選択する
マクロの実行途中にセル範囲を選択するには、オブジェクトのメソッドを用いる。
' Set Range型変数 = Application.InpurBox("表示文字列", Type := 8) Dim selectedRange As Range, rng As Range ' セル表示ダイアログを表示 Set selectedRange = Application.InputBox("対象セルを選択してください", Type:=8) ' 選択セル範囲に対してループ処理 For Each rng In selectedRange rng.Next.Value = "〇" Next