コマンドボタンを既定のボタンに設定する(Defaultプロパティ)
ユーザーフォームに設置したコマンドボタンを既定のボタンに設定するには Default プロパティを使用します。ここでは Excel のユーザーフォームで Default プロパティを使ってコマンドボタンを既定のボタンに設定する方法について解説します。
(Last modified: )
既定のボタンを設定する
ユーザーフォームに設置したコマンドボタンの中で特定のボタンを既定のボタンに設定するには Default
プロパティを使用します。デフォルトでは Default
の値は「False」となっています。
複数のコマンドボタンの中から特定のボタンを既定のボタンに設定するには Default
プロパティの値のところに表示されているドロップダウンメニューをクリックし、「True」を選択してください。
既定のボタンに設定できるコマンドボタンは、ユーザーフォーム毎に一つだけです。他のコマンドボタンが既定のボタンになっている状態で、他のコマンドボタンを既定のボタンに設定すると元々設定されていたコマンドボタンは既定のボタンではなくなります。既定のボタンに設定されると、コマンドボタンが少し強調して表示されるようになります。
ユーザーフォームでコマンドボタン以外にフォーカスがある場合に、 Enter
キーを押すと既定のボタンが実行されます。例えばテキストボックスにフォーカスがあるときに Enter
キーを押すと、既定のボタンに設定されている「No」ボタンが実行されます(下記ではそれぞれのコマンドボタン毎に Click
イベントが発生するメッセージボックスを表示するように設定してあります)。
このように Default
プロパティの値を変更することで、既定のボタンを設定することができます。
VBAのプログラムの中でDefaultプロパティを設定する
プロパティウィンドウを使って Default
プロパティの値を変更する代わりに、 VBA のコードを記述して Default
プロパティの値を変更することもできます。
プログラムの中で Default
プロパティを設定する場合は次の書式を使用します。
オブジェクト.Default [= Boolean ]
対象のオブジェクトの Default
プロパティに対して「True」を設定すると既定のボタンに設定されます。「False」を設定すると既定のボタンではなくなります。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で Default
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの 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
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。三つ表示されているボタンの中で「Yes」ボタンが既定のボタンに設定されているため少し強調表示されています。
テキストボックスにフォーカスがある状態で Enter
キーを押すと、既定のボタンである「Yes」ボタンが実行されてメッセージボックスが表示されます。
このように VBA のプログラムの中で Default
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで Default プロパティを使ってコマンドボタンを既定のボタンに設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。