Excel VBAでユーザーフォームを作成していると、特定のボタンだけに影のような表示が出たり、枠が強調されたりすることがあります。これはフォームやボタンの設定によって発生する標準的な表示で、必ずしも不具合ではありません。
この記事では、VBAのUserForm上に配置したCommandButtonに影が表示される原因と、その表示をなくすために確認すべきプロパティ設定について解説します。
VBAフォームのボタンに影が表示される主な原因
ユーザーフォーム上のボタンに影が表示される場合、多くはそのボタンが「既定のボタン」または「フォーカスを取得しているボタン」として扱われていることが原因です。
例えば、フォームを表示した直後に特定のボタンだけ枠や影が表示される場合、そのボタンが初期フォーカスの対象になっている可能性があります。
Windowsの標準的なユーザーインターフェースでは、現在操作対象になっているボタンを分かりやすくするため、強調表示を行うことがあります。
Defaultプロパティが影表示の原因になる場合
VBAのCommandButtonには「Default」というプロパティがあります。この設定がTrueになっているボタンは、フォーム上でEnterキーを押した場合に実行される既定ボタンになります。
例えば、CommandButton4のDefaultプロパティがTrueになっていると、フォーム表示時にそのボタンが強調され、影や枠のような表示が出ることがあります。
不要な場合は、対象ボタンのDefaultプロパティをFalseに変更します。
設定方法は、VBE(Visual Basic Editor)で対象のボタンを選択し、プロパティウィンドウの「Default」を「False」に変更します。
Cancelプロパティも確認する
Defaultプロパティと似た設定として、CommandButtonにはCancelプロパティがあります。
CancelプロパティがTrueの場合、Escキーを押したときに実行されるボタンとして扱われます。そのため、こちらも意図しない強調表示につながる場合があります。
閉じるボタンなど特定の用途以外で使用していない場合は、CancelプロパティもFalseになっているか確認するとよいでしょう。
フォーム表示時のフォーカス設定を変更する方法
DefaultやCancelを変更しても影が消えない場合は、フォーム表示時にどのコントロールがフォーカスを取得しているか確認します。
UserFormでは、最初に配置されたコントロールやTabIndexの番号が小さいコントロールが初期フォーカスになることがあります。
例えば、4番のボタンに影が表示される場合、そのボタンのTabIndexが0になっていたり、フォーム起動時にSetFocusで指定されていたりする可能性があります。
TabIndexはプロパティウィンドウから変更できます。最初に選択状態にしたくないボタンがある場合は、別のコントロールへフォーカスを移す設定を行います。
CommandButtonの特殊表示をなくすための設定例
フォーム起動時に特定のボタンを強調表示したくない場合は、UserFormのInitializeイベントでフォーカス先を変更する方法があります。
例えば、以下のようにテキストボックスなど別のコントロールへフォーカスを移動させることで、ボタンの強調表示を避けられます。
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub
また、ボタン自体を初期選択状態にする必要がない場合は、DefaultやTabIndexの設定も合わせて見直すと効果的です。
ボタンの見た目を変更するときの注意点
VBAのCommandButtonは、ExcelやWindowsのテーマ設定の影響を受けるため、完全に影や立体感を消せない場合があります。
特に古いOfficeバージョンでは、標準コントロールの描画仕様によって表示が変わることがあります。
デザインを完全に統一したい場合は、CommandButtonではなくLabelやImageコントロールを利用して独自ボタンを作成する方法もあります。
まとめ
VBAユーザーフォームで特定のボタンに影が表示される場合、主な原因はDefaultプロパティ、Cancelプロパティ、またはフォーム表示時のフォーカス設定です。
まずは対象ボタンのDefaultをFalseに変更し、必要に応じてCancelやTabIndex、SetFocusの設定を確認すると解決できる可能性があります。
フォームの表示はExcelやWindowsの標準UI仕様にも影響されるため、目的に合わせて設定を調整することが、見やすいユーザーフォームを作成するポイントです。


コメント