注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

ExcelVBAで条件分岐を学ぼう④

  • 2019年3月23日
  • 2019年3月23日
  • VBA
  • 64回
  • 0件
VBA NO IMAGE

①メッセージ画面を使って処理を分ける

MsgBox関数は、これまで画面にメッセージを表示する為だけに使用してきましたが、その戻り値を取得して利用することも可能えす。ここでは、メッセージ画面に複数のボタンを表示し、クリックされたボタンに応じて処理を分ける方法を紹介します。

・「OK」と「キャンセル」で処理を分ける

ここまでのMsgBox関数の使用例では、引数として、表示するメッセージを表す第1引数と、メッセージ画面のタイトルバーを表す第3引数のみを指定していましたが、この関数の指定可能な引数は、これ以外にも表示するボタンを表す第2引数などがあります。

・実行結果

メッセージ画面に「OK」と「キャンセル」を表示するには第2引数(Buttons)に定数vbOKCancelを指定します。また戻り値を取得するには、引数「()」で指定して、式の形で記述します。戻り値は数値で「OK」がクリックされた場合は定数vbOKで「キャンセル」がクリックされた場合は定数vbCancelが表されます。

・3つのボタンに応じて処理を分ける

MsgBox関数の引数Buttonsには、メッセージ画面に、「はい」「いいえ」の2つのボタンを表示したいときは定数vbYesNoを、「はい」「いいえ」「キャンセル」の3つのボタンを表示したいときは定数vbYesNoCancelを指定します。戻り値は数値で、「はい」なら定数vbYes、「いいえ」なら定数vbNo、「キャンセル」なら定数vbCancelが表されます。

・実行結果①

・実行結果②

②文字を入力させて処理を分ける

VBAには、簡単に利用できるダイアログボックスとして、MsgBox関数のほかにInputBox関数による入力画面も用意されています。入力された文字列を戻り値として取得できるので、それ以降の処理でこの文字列を利用することができます。

・入力された点数に応じて合否を表示する

マクロの実行中にユーザーにデータを入力させたい場合は、InputBox関数を利よします。この関数では、引数Promptで画面に表示するメッセージを指定できます。入力画面が表示されるので、任意の内容を入力して「OK」をクリックすると、入力した文字列が戻り値として返されます。なお、「キャンセル」ボタンをクリックした場合は、空白文字列「””」が返されます。

・実行結果

・InputBox関数の「キャンセルに対応する」

上記のコードは、入力画面に数値を入力して「OK」をクリックした場合は問題ありませんが、「キャンセル」ボタンをクリックした場合、処理がキャンセルされるだけでなく、「型が一致しません」というエラーメッセージが表示されます。「キャンセル」ボタンに対応するには、InputBox関数の戻り値を変数に収めて、その内容に応じて処理を分けます。まず、Ifステートメントで「キャンセル」をクリックした場合の戻り値である空白文字列「””」かどうかを判定し、空白文字列でなければIfステートメントをネストして値を判定します。これにより、「キャンセル」をクリックしたときには、何も起こらなくなります。

・実行結果

・InputBox関数の戻り値の種類に注意!

ここではInputBox関数の入力画面に数値が入力される前提で処理を行っていますが、実際には文字列が入力される可能性もあります。また、上記で解説した通り、「キャンセル」ボタンがクリックされた場合の戻り値は空白文字列になります。こうした複数の種類のデータに対応するため、InputBox関数の戻り値を収める変数はVariant型で宣言します。なお、入力画面に数値でなく文字列が入力された場合は、「>=」などを使った比較が可能なので、エラーになりません。

NO IMAGE
最新情報をチェックしよう!