コマンドボタンをキャンセルボタンに設定する(Cancelプロパティ)
ユーザーフォームに設置したコマンドボタンをキャンセルボタンに設定するには Cancel プロパティを使用します。ここでは Excel のユーザーフォームで Cancel プロパティを使ってコマンドボタンをキャンセルボタンに設定する方法について解説します。
(Last modified: )
キャンセルボタンを設定する
ユーザーフォームに設置したコマンドボタンの中で特定のボタンをキャンセルボタンに設定するには Cancel
プロパティを使用します。デフォルトでは Cancel
の値は「False」となっています。
複数のコマンドボタンの中から特定のボタンを既定のボタンに設定するには Cancel
プロパティの値のところに表示されているドロップダウンメニューをクリックし、「True」を選択してください。
キャンセルボタンに設定できるコマンドボタンは、ユーザーフォーム毎に一つだけです。他のコマンドボタンがキャンセルボタンになっている状態で、他のコマンドボタンをキャンセルボタンに設定すると元々設定されていたコマンドボタンはキャンセルボタンではなくなります。キャンセルボタンに設定されても表示上は変化がありません。
ユーザーフォームで Esc
キーを押すとキャンセルボタンが実行されます。フォーカスがどのコントロールにあるのかは関係ありません。今回は「Cancel」ボタンがキャンセルボタンに設定されているので、 Esc
キーを押すと「Cancel」ボタンが実行されます(下記ではそれぞれのコマンドボタン毎に Click
イベントが発生するメッセージボックスを表示するように設定してあります)。
※ キャンセルボタンは、通常ユーザーフォームで行った変更などをキャンセルしてユーザーフォームを開く前の状態に戻すような操作を行うときに使用されます。
このように Cancel
プロパティの値を変更することで、キャンセルボタンを設定することができます。
VBAのプログラムの中でCancelプロパティを設定する
プロパティウィンドウを使って Cancel
プロパティの値を変更する代わりに、 VBA のコードを記述して Cancel
プロパティの値を変更することもできます。
プログラムの中で Cancel
プロパティを設定する場合は次の書式を使用します。
オブジェクト.Cancel [= Boolean ]
対象のオブジェクトの Cancel
プロパティに対して「True」を設定するとキャンセルボタンに設定されます。「False」を設定するとキャンセルボタンではなくなります。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で Cancel
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。合わせてそれぞれのボタンがクリックされたときのイベントプロシージャを記述します。
Private Sub UserForm_Initialize() CommandButton3.Cancel = True End Sub Private Sub CommandButton1_Click() MsgBox "Yes" End Sub Private Sub CommandButton2_Click() MsgBox "No" End Sub Private Sub CommandButton3_Click() MsgBox "Cancel" End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。三つ表示されているボタンの中で「Cancel」ボタンがキャンセルボタンに設定されているため、 Esc
キーを押すと「Cancel」ボタンが実行されてメッセージボックスが表示されます。
このように VBA のプログラムの中で Cancel
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで Cancel プロパティを使ってコマンドボタンをキャンセルボタンに設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。