コマンドボタンをキャンセルボタンに設定する(Cancelプロパティ)

ユーザーフォームに設置したコマンドボタンをキャンセルボタンに設定するには Cancel プロパティを使用します。ここでは Excel のユーザーフォームで Cancel プロパティを使ってコマンドボタンをキャンセルボタンに設定する方法について解説します。

(Last modified: )

キャンセルボタンを設定する

ユーザーフォームに設置したコマンドボタンの中で特定のボタンをキャンセルボタンに設定するには Cancel プロパティを使用します。デフォルトでは Cancel の値は「False」となっています。

キャンセルボタンを設定する(1)

複数のコマンドボタンの中から特定のボタンを既定のボタンに設定するには Cancel プロパティの値のところに表示されているドロップダウンメニューをクリックし、「True」を選択してください。

キャンセルボタンを設定する(2)

キャンセルボタンに設定できるコマンドボタンは、ユーザーフォーム毎に一つだけです。他のコマンドボタンがキャンセルボタンになっている状態で、他のコマンドボタンをキャンセルボタンに設定すると元々設定されていたコマンドボタンはキャンセルボタンではなくなります。キャンセルボタンに設定されても表示上は変化がありません。

キャンセルボタンを設定する(3)

ユーザーフォームで Esc キーを押すとキャンセルボタンが実行されます。フォーカスがどのコントロールにあるのかは関係ありません。今回は「Cancel」ボタンがキャンセルボタンに設定されているので、 Esc キーを押すと「Cancel」ボタンが実行されます(下記ではそれぞれのコマンドボタン毎に Click イベントが発生するメッセージボックスを表示するように設定してあります)。

キャンセルボタンを設定する(4)

キャンセルボタンを設定する(5)

※ キャンセルボタンは、通常ユーザーフォームで行った変更などをキャンセルしてユーザーフォームを開く前の状態に戻すような操作を行うときに使用されます。

このように Cancel プロパティの値を変更することで、キャンセルボタンを設定することができます。

VBAのプログラムの中でCancelプロパティを設定する

プロパティウィンドウを使って Cancel プロパティの値を変更する代わりに、 VBA のコードを記述して Cancel プロパティの値を変更することもできます。

プログラムの中で Cancel プロパティを設定する場合は次の書式を使用します。

オブジェクト.Cancel [= Boolean ]

対象のオブジェクトの Cancel プロパティに対して「True」を設定するとキャンセルボタンに設定されます。「False」を設定するとキャンセルボタンではなくなります。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で Cancel プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でCancelプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でCancelプロパティを設定する(2)

今回はユーザーフォームの 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

VBAのプログラムの中でCancelプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でCancelプロパティを設定する(4)

ユーザーフォームが表示されました。三つ表示されているボタンの中で「Cancel」ボタンがキャンセルボタンに設定されているため、 Esc キーを押すと「Cancel」ボタンが実行されてメッセージボックスが表示されます。

VBAのプログラムの中でCancelプロパティを設定する(5)

VBAのプログラムの中でCancelプロパティを設定する(6)

このように VBA のプログラムの中で Cancel プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで Cancel プロパティを使ってコマンドボタンをキャンセルボタンに設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。