2-1 基本的なコントロールに共通のプロパティを確認するコントロール 2021.11.16
次の書籍の第1章~5章を公開しています。
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」
デフォルトのツールボックス内全てのコントロールに共通するプロパティは次の通りです。
・BackColorプロパティ 背景色の設定
・ControlTipTextプロパティ ツールチップを設定
・Enabledプロパティ コントロールの有効・無効設定
・Heightプロパティ コントロールの高さ設定
・Leftプロパティ コントロールの水平位置設定
・Tagプロパティ プログラマが自由な値を設定
・Topプログラム コントロールの垂直位置設定
・Visibleプロパティ コントロールの表示・非表示設定
・Widthプロパティ コントロールの幅設定
コントロールの背景色を設定する
ユーザーフォームと同様です。
「1-12 フォームの背景色を設定する」
ツールヒントを設定する
ControlTipTextプロパティはツールチップ(ツールヒント)を取得・設定できます。
設定はプロパティウィンドウに直接文字列を入力します。
例として、テキストボックス1のControlTipTextプロパティに値を設定します。
フォームを表示して、テキストボックス上にマウスカーソルが重なるとツールヒントが表示されます。
コントロールを無効にする
ユーザーフォームと同様です。
「1-22 フォームを無効にする」
「ある条件を満たさないとコントロールが有効にならない」といった使い方が考えられます。
【例】全ての必須項目を入力しないと実行ボタンを押せない
コントロールのサイズを変更する
ユーザーフォームと同様です。
「1-10 フォームのサイズを変更する」
コントロールの位置を設定する
フォーム上のコントロールの位置は、フォームのクライアント領域の左上隅が基準になっています。
垂直位置はTopプロパティ、水平位置はLeftプロパティになります。
【補足情報】Top/Leftプロパティの基準
フォーム上のコントロールは、フォームのクライアント領域左上隅を位置の基準にしていますが、フレーム内のコントロールは、フレームの左上隅を位置の基準にします。
同様にマルチページ内のコントロールは、マルチページの左上隅を位置の基準にします。
このように、Top/Leftプロパティは、そのコントロールを格納する親オブジェクトである、コンテナを基準にしています。
【補足情報】コンテナ
ユーザーフォーム、フレームコントロール、マルチページコントロールのように、他のコントロールを内側に格納できる親オブジェクトのことを、コンテナといいます。
コンテナは、視認性を高くする役割のみでなく、グループを作る機能を備えています。
フォームのコントロールと、フレームやマルチページ内のコントロールは、別の階層といった構造になります。
コンテナは、階層ごとに一つのグループとなりますので、グループ内で一つしか選択できないOptionButtonコントロールで、その役割を確認することができます。
OptionButtonは同じ階層で、複数のグループに分ける場合、グループ名をつける必要がありますが、コンテナに収めると、グループ設定を行わなくとも、別のグループとして扱えます。
異なるコントロールをグループ化する
Tagプロパティは、全てのコントロールに備わっています。このプロパティは、プログラマが自由に値を設定でき、利用することができます。
例えば、種類の違うコントロールに同じグループ名を付けて、そのグループに対し一括で処理するといった使い方が考えられます。
次の例は、予めフォーム上の種類の異なる3つのコントロール(ラベル、チェックボックス、コマンドボタン)のTagプロパティに、共通の値を設定しグループ化しています。
サンプルコード
Tagプロパティに「グループ1」と設定されているコントロールの見出しを大文字に変換する
Private Sub UserForm_Click() Dim objCtl As Control For Each objCtl In Me.Controls If objCtl.Tag = "グループ1" Then objCtl.Caption = StrConv(objCtl.Caption, vbUpperCase) End If Next End Sub
コントロールを非表示にする
Visibleプロパティはコントロールの表示・非表示を取得・設定します。
・True(既定):表示
・False:非表示
ユーザーフォームは、VBAからのみ表示状態を取得できましたが、コントロールは取得・設定ができ、プロパティウィンドウで予め設定することも可能です。
プロパティウィンドウでVisibleプロパティをFalseに設定した場合でも、VBE上ではコントロールは表示されています。Showメソッドでフォームを実体化した時に非表示となります。
何かの条件を満たした時に、コントロールを表示するといった使い方が考えられます。
サンプルコード
予めプロパティウィンドウでテキストボックス1のVisibleプロパティをFalseに設定
フォーム上で[Shift]+[Ctrl]を押しながらマウスボタンの左を押すと、テキストボックスが表示
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Shift = 3 Then If Button = 1 Then TextBox1.Visible = True End If End If End Sub
書籍紹介140以上のサンプルファイル付き!
知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
■ 購入:amazon