2-3 タイプ別コントロールのプロパティを確認するコントロール 2021.11.16
次の書籍の第1章~5章を公開しています。
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」
項目
・キー操作でコントロールをクリックする
・コントロールの内容に応じてサイズを自動調整する
・コントロールの枠線を色変更し表示する
・コントロールの見出しを設定する
・コントロールのフォント・フォント色を設定する
・コントロール上のマウスアイコンを変更する
・コントロールに画像を設定する
・コントロールに設定した画像の位置やサイズを設定する
・コントロールに挿入した画像と見出しの位置を設定する
・コントロールの表示スタイルを変更する
・フォーカスが移る順番を指定する
・見出しやテキストの表示位置を設定する
・値を取得する
・テキストを折り返して表示する
キー操作でコントロールをクリックする
Acceleratorプロパティは、キー操作で、該当コントロールをクリックした状態にします。
Acceleratorプロパティには、通常キーボードのa~zの値を設定します。
実際の操作では、[Alt]キー+ Acceleratorプロパティに設定した値で、そのコントロールをクリック状態にします。
◇Acceleratorプロパティをメンバーに持つコントロール
Label / CheckBox / OptionButton / ToggleButton / CommandButton / MultiPage
◇プロパティウィンドウでの設定
直接値を入力します。
◇サンプルコード
フォームのインスタンスを生成する際に、コマンドボタン1のAcceleratorプロパティに「a」を設定
フォームが表示された状態で、[Alt]+[a]を押すとフォームの背景色が切り替わる
Private Sub UserForm_Initialize() 'フォームの初期化イベント CommandButton1.Accelerator = "a" End Sub
Private Sub CommandButton1_Click() If Me.BackColor = &H8000000F Then Me.BackColor = &HC0C0FF Else Me.BackColor = &H8000000F End If End Sub
このプロパティを使用すると、フォーカスも該当のコマンドに移動します。
ラベルコントロールの場合は、タブオーダーの順番で、そのラベルの次のコントロールにフォーカスが移ります。
コントロールの内容に応じてサイズを自動調整する
AutoSizeプロパティは、見出しやテキスト全体を表示するために、オブジェクトのサイズを自動的に調整するかどうかを設定します。取得・設定できる値は次の2つです。
・True:自動で調整する
・False(既定):自動で調整しない
◇AutoSizeプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / CheckBox / OptionButton / ToggleButton / CommandButton / Image / RefEdit
◇プロパティウィンドウでの設定
リストから選択します。
◇サンプルコード①
フォームをクリックするとコマンドボタンのサイズが、見出しに合わせて自動で調整される
Private Sub UserForm_Click() CommandButton1.AutoSize = True End Sub
◇サンプルコード②
テキストボックスの値入力に合わせてコントロールのサイズを自動調整に設定する
Private Sub UserForm_Initialize() TextBox1.AutoSize = True End Sub
コントロールの枠線を色変更し表示する
BorderColorプロパティはコントロールの枠線の色を取得・設定します。
設定方法はユーザーフォームと同様です。
「1-14 枠線の色を変える」
BorderStyleプロパティは枠線の有無を取得・設定します。
設定方法はユーザーフォームと同様です。
「1-13 表示エリアに枠線を表示する」
◇BorderColor・BorderStyleプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / Frame / Imgae / RefEdit
◇プロパティウィンドウでの設定
リストから選択します。
◇サンプルコード
フォームをクリックすると、ラベルにピンク色の枠線を設定し表示する
Private Sub UserForm_Click() Label1.BorderColor = &HFF00FF Label1.BorderStyle = fmBorderStyleSingle End Sub
コントロールの見出しを設定する
Captionプロパティは、コントロールの見出しを取得・設定します。
BorderStyleプロパティは枠線の有無を取得・設定します。
設定方法はユーザーフォームと同様です。
「1-13 表示エリアに枠線を表示する」
◇Captionプロパティをメンバーに持つコントロール
Label / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / MultiPage
◇プロパティウィンドウでの設定
直接値を入力します。
◇サンプルコード
フォームをクリックすると、ラベルの見出しが変更される
Private Sub UserForm_Click() Label1.Caption = "平家物語" End Sub
コントロールのフォント・フォント色を設定する
フォントに関するFont・ForeColorプロパティはユーザーフォームと同様です。
「1-19 追加するコントロールのデフォルトのフォントを設定する」
◇Fontプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / TabStrip / RefEdit
◇ForeColorプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / TabStrip / ScrollBar / SpinButton / RefEdit
コントロール上のマウスアイコンを変更する
マウスアイコンの表示に関するMouseIcon・MousePointerプロパティは、ユーザーフォームと同様です。
「1-21 フォーム上のマウスポインタの形を変更する」
◇MouseIcon・MousePointerプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / TabStrip / ScrollBar / SpinButton / RefEdit
コントロールに画像を設定する
画像設定に関するPicture・プロパティはユーザーフォームと同様です。
「1-15 フォームの背景に画像を設定する」
◇Pictureプロパティをメンバーに持つコントロール
Label / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / MultiPage / Image
コントロールに設定した画像の位置やサイズを設定する
画像表示設定に関するPicturePlignment・PictureSizeMode・PicureTilingプロパティは、ユーザーフォームと同様です。
「1-16 背景画像のサイズモードを設定する」
「1-17 背景画像の位置を設定する」
「1-18 背景画像を敷き詰める」
◇PicturePlignment・PictureSizeMode・PicureTilingプロパティをメンバーに持つコントロール
Frame / MultiPage / Image
コントロールに挿入した画像と見出しの位置を設定する
PicturePositionプロパティは、コントロールの見出しと画像の位置を取得・設定します。
設定できる値は0~12です。
既定は「7-fmPicturePositionAboveCenter」です。
◇PicturePositionプロパティをメンバーに持つコントロール
Label / CheckBox / OptionButton / ToggleButton / CommandButton
◇プロパティウィンドウでの設定
リストから選択します。
コントロールの表示スタイルを変更する
SpecialEffectプロパティは、コントロールの表示スタイルを変更します。
コントロールによって設定できる数は異なりますが、基本的には次の5つです。※
※チェックボックスとオプションボタンは設定できる値が2つになります。
・0-fmSpecialEffectFlat
・2-fmSpecialEffectSunken
◇SpecialEffectプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / Frame / Image / RefEdit
◇サンプルコード
フォームをクリックすると、テキストボックス1のスタイルがランダムに変更される
Private Sub UserForm_Click() Randomize Dim i As Long Do i = Int(Rnd() * 5) 'ランダムの値(0~4)を取得 If i = 4 Then i = 6 '4の場合は6に変更 Loop Until TextBox1.SpecialEffect <> i '現スタイルと異なる値の場合は TextBox1.SpecialEffect = i 'ループを抜ける End Sub
フォーカスが移る順番を指定する
TabIndex・TabStopプロパティは、[Tab]キーや[Enter]キーでの、フォーカス移動順の設定に用います。
フォーム上のフォーカスの順番は0からはじまり、その後は1,2,3…のように正の整数が一つずつ増えていく形になります。
コントロールが3つあるフォームの場合は、挿入順に0,1,2と自動で値が振られます。
TabIndex・TabStopプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton / Frame / CommandButton / TabStrip / ScrollBar / SpinButton / RefEdit
◇「タブオーダー(TabIndex)」の変更
VBEのフォームオブジェクト上の、コントロールのない場所で右クリックすると、メニューが表示されるので「タブオーダー」を選択します。
タブオーダーダイアログが表示されるので、コントロールを選択し、メニューのボタンで上・下に移動します。
フォーカスが上のコントロールから下のコントロールの順に移動します。
※ プロパティウィンドウに直接数値を入力することで設定する方法もあります
◇[Tab]キーや[Enter]キーでのフォーカス移動を制限する
[Tab]キーや[Enter]キーでフォーカスを移したくないコントロールがある場合は、TabStopプロパティの値をFalseに設定します。
TabStopプロパティに設定できる値は次の2つです。
・True(既定):Tab操作を有効
・False:Tab操作を無効
Labelコントロールはフォーカスを受けとれません。ラベルのTabStopプロパティは初期値でFalseですが、この値をTrueすると、そのラベルにフォーカスが移るタイミングで、タブオーダーが次のコントロールにフォーカスが移ります。
見出しやテキストの表示位置を設定する
TextAlignプロパティは、見出しやテキストの表示位置を取得・設定します。設定できる値は次の3つです。
・1-fmTextAlignLeft:左揃え
・2-fmTextAlignCenter:中央揃え
・3-fmTextAlignRight:右揃え
◇TextAlignプロパティをメンバーに持つコントロール
Label / TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton
◇プロパティウィンドウでの設定
リストから選択します。
◇サンプルコード
フォームをクリックすると、フォーム上の全てのTextBoxコントロールを中央揃えにする
Private Sub UserForm_Click() Dim myCtrl As MSForms.Control For Each myCtrl In Me.Controls If TypeName(myCtrl) = "TextBox" Then myCtrl.TextAlign = fmTextAlignCenter End If Next End Sub
値を取得する
Valueプロパティは、該当コントロールの値を取得・設定します。
マルチページとタブストリップでは、ページの取得・ページの選択になります。
設定できる値はコントロールによって異なります。
◇Valueプロパティをメンバーに持つコントロール
TextBox / ComboBox / ListBox / CheckBox / OptionButton / ToggleButton / TabStrip / MultiPage / ScrollBar / SpinButton / RefEdit
緑:Valueプロパティに設定できる値が「True」または「False」のコントロール(「NULL」を含む)
赤:Valueプロパティに設定できる値が、数値のコントロール
◇サンプルコード
コマンドボタンをクリックすると、テキストボックス、チェックボックス、スクロールバーの値を取得
Private Sub CommandButton1_Click() Dim strValue(2) As String strValue(0) = TextBox1.Value strValue(1) = CheckBox1.Value strValue(2) = ScrollBar1.Value MsgBox Join$(strValue, vbLf) End Sub
テキストを折り返して表示する
WordWrapプロパティは、見出しやテキストがコントロールの幅を超えたときに、折り返して表示するかを設定します。
取得・設定できる値は次の2つです。
・True:折り返し表示する
・False(既定):折り返し表示しない
◇WordWrapプロパティをメンバーに持つコントロール
Label / TextBox / CheckBox / OptionButton / ToggleButton / CommandButton / RefEdit
◇プロパティウィンドウでの設定
リストから選択します。
◇サンプルコード
フォームをクリックすると、Labelのテキストを折り返して表示する
Private Sub UserForm_Click() Label1.WordWrap = True End Sub
書籍紹介140以上のサンプルファイル付き!
知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
■ 購入:amazon