コマンドボタンを既定のボタンに設定する(Defaultプロパティ)

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

(Last modified: )

既定のボタンを設定する

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

既定のボタンを設定する(1)

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

既定のボタンを設定する(2)

既定のボタンに設定できるコマンドボタンは、ユーザーフォーム毎に一つだけです。他のコマンドボタンが既定のボタンになっている状態で、他のコマンドボタンを既定のボタンに設定すると元々設定されていたコマンドボタンは既定のボタンではなくなります。既定のボタンに設定されると、コマンドボタンが少し強調して表示されるようになります。

既定のボタンを設定する(3)

ユーザーフォームでコマンドボタン以外にフォーカスがある場合に、 Enter キーを押すと既定のボタンが実行されます。例えばテキストボックスにフォーカスがあるときに Enter キーを押すと、既定のボタンに設定されている「No」ボタンが実行されます(下記ではそれぞれのコマンドボタン毎に Click イベントが発生するメッセージボックスを表示するように設定してあります)。

既定のボタンを設定する(4)

既定のボタンを設定する(5)

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

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

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

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

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

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

サンプルコード

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

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

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

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

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

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

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。合わせてそれぞれのボタンがクリックされたときのイベントプロシージャを記述します。

Private Sub UserForm_Initialize()
    CommandButton1.Default = 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のプログラムの中でDefaultプロパティを設定する(3)

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

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

ユーザーフォームが表示されました。三つ表示されているボタンの中で「Yes」ボタンが既定のボタンに設定されているため少し強調表示されています。

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

テキストボックスにフォーカスがある状態で Enter キーを押すと、既定のボタンである「Yes」ボタンが実行されてメッセージボックスが表示されます。

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

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

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

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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