こんにちは、Ryoです。
ユーザーフォーム上でのテキストボックスはデフォルトで左余白が設定されていますが、この余白はSelectionMarginプロパティを利用して有無を設定することもできますので、今回はその内容について書いていきます。
1.サンプル概要
テキストボックスで左余白を設けるのは視認性向上の他にもう一つあり、余白部をクリックすることで入力された文字列全体を選択できるので便利ということがあります。
サンプルなのでユーザーフォーム上にテキストボックス1,2を設け、コマンドボタンで各テキストボックスの余白有無を切り替えるものをつくっています。

コマンドボタンをクリックする毎にテキストボックス1,2でそれぞれ左余白有無が切替わります。


余白なし設定でも文字列左側をクリックすれば全体を選択できますが、かなり狭い範囲なので余白を設けておくと扱いやすいということです。

余白をクリックすることで文字列全体が選択できます。

動作としては以下の通りになります。
以上がサンプル概要になります。
2.サンプルコード
◆UserForm初期化処理
各テキストボックスへ予め文字を入力しておきますので、UserForm_Initializeに記述します。
Private Sub UserForm_Initialize() '各テキストボックスへ予め文字列を入力 TextBox1.Text = "左余白なし" TextBox2.Text = "左余白あり" End Sub
◆テキストボックス1,2の左余白設定有無切り替え
Private Sub CommandButton1_Click()
'テキストボックス1と2の左余白設定切り替え
'テキストボックス1で左余白有無による分岐
If TextBox1.SelectionMargin = True Then
'設定有り
' テキストボックス1:左余白なし
' テキストボックス2:左余白あり
TextBox1.SelectionMargin = False
TextBox2.SelectionMargin = True
'各テキストボックスの文字列変更
Call UserForm_Initialize
Else
'設定なし
' テキストボックス1:左余白あり
' テキストボックス2:左余白なし
TextBox1.SelectionMargin = True
TextBox2.SelectionMargin = False
'各テキストボックスの文字列変更
TextBox1.Text = "左余白あり"
TextBox2.Text = "左余白なし"
End If
End Sub
SelectionMarginプロパティにTrueを設定することでテキストボックスやコンボボックスの左側に余白を設定することができます。
構文:オブジェクト.SelectionMargin =expression(True/False)
サンプルではテキストボックスに設定されているSelectionMarginの状態(True or False)を確認し、状態に応じて余白設定や文字列を切り替える処理を行っています。
このSelectionMarginはプロパティ上でも設定でき、初期設定でTrueになっています。

3.まとめ
テキストボックスやコンボボックスは元から左余白が設定されているのでSelectionMarginプロパティで設定を変えるようなことはないと思いますが、その余白を選択することで文字列全体を選択できるということは知っておくと便利です。
MultiLineプロパティなどで複数行入力されているような場合であれば、余白をクリックすることで行を選択するようなこともできますので、何か機会があればご活用ください。
以上、テキストボックスで左余白を設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo

