ExcelVBA技 ユーザーフォーム E13U005

E13U005 (Excel2000~2013)
ユーザーフォームコントロールの見落としやすいプロパティ


ユーザーフォームのコントロールには多くのプロパティがあります。 多いだけに見落としがちな必須プロパティのメモです。

TextBox
Locked プロパティ
 コントロールを編集可能にするかどうかを設定します。
 Trueにすると表示されたまま編集ができないようにします。
 カット&コピーなどのショートカットキーは使えます。 
PasswordChar プロパティ 
 実際に入力された文字の代わりにプレースホルダ文字を表示します。
 プレースホルダ:セキュリティ上の理由から他の文字の代わりに使われる文字。
 例えばユーザーがパスワードを入力すると入力された文字の代わりにアスタリスク(*)が表示されます。
EnterKeyBehavior プロパティ 
 Trueにすると[Enter]キーで改行します。
 但し、MultiLineプロパティがTrueの場合に限り適用されます。
TabKeyBehavior プロパティ 
 Trueにすると[Tab]キーが入力出来ます。
 但し、MultiLineプロパティがTrueの場合に限り適用されます。
SelectionMargin プロパティ 
 文字列の左側の余白部分をクリックすると、その行の文字列を選択できるようにするかどうかを設定します。
 Falseにすると左端の隙間を無くし文字列を表示できます。
 (TextBox、ComboBox)
ShowDropButtonWhen プロパティ (TextBoxでは非表示メンバ)
 右端の下向き矢印(DropButton)の表示を制御します。
 定数            値 内容 
 fmShowDropButtonWhenNever 0 DropButtonはどの状況下でも表示しません。 
 fmShowDropButtonWhenFocus 1 コントロールにフォーカスがあるときにDropButtonを表示します。 
 fmShowDropButtonWhenAlways 2 DropButtonを常に表示します。 
 TextBoxにもDropButtonを表示する事が出来ます。
 (TextBox、ComboBox)

ComboBox
Style プロパティ
 fmStyleDropDownList 2 にするとリストから値を選択しなければなりません。 
 任意の文字は入力出来なくなります。 
ListWidth プロパティ
 リスト部分の幅を設定します。
 リスト幅をComboBox幅と同じにしてスクロールバーを出さいようにするにはListWidthとColumnWidths
 プロパティをWidthプロパティと同じにします。

ListBox
ColumnCount プロパティ
 列の数を設定します。
 列の幅を設定するときは ColumnWidthsプロパティを使います。
 ColumnWidthsに0を設定すると列を非表示にすることができます。
ListStyle プロパティ 
 fmListStyleOption 1 にすると複数の選択ができるオプションボタン又はチェックボックスを表示します 。
MultiSelect プロパティ 
 複数選択を許可するかどうかを設定します。
 選択されている項目を調べるにはSelected プロパティを使います。
  For ii = 0 To Me.ListBox1.ListCount - 1
    If ListBox1.Selected(ii) = True Then
      Debug.Print ListBox1.List(ii)
    End If
  Next   

CommandButton
TakeFocusOnClick プロパティ
 Falseにするとクリックされてもフォーカスを取得しません。フォーカスは元のコントロールに留まります。 

MultiPage
Style プロパティ 
 Tabsのスタイルを設定します。
 fmTabStyleButtons 1 タブ バーにボタンを表示します 
 fmTabStyleNone  2 タブ バーを表示しません
 各種ウイザードはfmTabStyleNoneが用いられます。
Value プロパティ 
 現在アクティブなページを表す整数値を表します。取得、設定が出来ます。1ページ目は0です。
 MultiPage1.Value = 1 '2ページ目に切り替え

Image
Enabled プロパティ
 フォーカスを取得できるかどうか、及びイベントに応答するかどうかを設定します。
 Trueのままだと不都合が発生する可能性大です。イベントを用いなければFalseにしておくのが必須です。
 イベントを用いる場合はRepaintメソッドでの再描画が必須です。
 RepaintがないとWindows再描画がされるまで固まってしまいます。 
 Private Sub Image1_Click() 
   Image1.Picture = LoadPicture("xxx.png")
   Me.Repaint 'お呪いのRepaintメソッドが必須
 End Sub