こんにちは、Ryoです。
ユーザーフォームにおけるテキストボックスなどのコントロールを使用禁止の状態にするにはEnabledプロパティがありますが、もう一つ類似のものでLockedプロパティという編集禁止を設定できる手段がありますので、簡単ではありますがこれらプロパティの差異も含めて利用例などを書いていこうと思います。
1.サンプル概要
既に入力されたTextBox1とTextBox2、及びToggleButton1が配置されたUserFormを画像の通り準備しています。
テキストボックスの初期設定として表示した文字の通り、TextBox1にEnabledプロパティ、TextBox2にLockedプロパティの設定ON/OFFをトグルボタンで実行します。
ToggleButton1をクリックするとボタン表示が< ON >に変わり、それぞれのテキストボックスに設定されたプロパティが有効になります。
ONした状態で各Labelにも表示させていますが、TextBox1は使用不可となりグレーアウトしますので、一目で使用できないことはわかるものの見難くなります。TextBox2は見た目は変わらないので視認性は問題なく、またTextBox2自体を選択することは可能ですが、編集は不可となります。
EnabledプロパティもLockedプロパティも編集できないという点では同じですが、このように外観上は大きく異なります。
再度ToggleButton1をクリックすると、それぞれのTextBoxは初期状態に戻ります。
2.サンプルコード
先ずユーザーフォーム構成については以下の通りになります。Labelについては便宜上設けたものなので無くても特に問題ありません。
Private Sub UserForm_Initialize() 'ユーザーフォームの初期化処理 'テキストボックス1に文字列設定 TextBox1.Text = "Enableプロパティ「使用不可」" 'テキストボックス2に文字列設定 TextBox2.Text = "Lockedプロパティ「編集不可」" '※サンプル動作確認の便宜上、初期状態から ' テキスト表示をさせているものです。 End Sub
Private Sub UserForm_Initialize()ではユーザーフォームの初期化処理を行っていますが、ここはコメントにも記載している通り便宜上初期状態からテキストを表示させる為に記述しています。
Private Sub ToggleButton1_Click() 'トグルボタン1をクリックした際の処理 With ToggleButton1 'トグルボタン状態を判定 If .Value Then '押された状態で表示を< ON >に変更 .Caption = " < ON > " 'EnabledプロパティをFalse⇒使用不可設定 TextBox1.Enabled = False 'LockedプロパティをTrue⇒編集不可設定 TextBox2.Locked = True '各TextBoxのラベル表示設定 Label1.Caption = _ "TextBox1=「使用不可」(グレーアウト)" Label2.Caption = _ "TextBox2=「編集不可」(選択は可能)" Else 'トグルボタンOFFでキャプションを元に戻す .Caption = "ToggleButton1" 'テキストボックス1の使用不可解除 TextBox1.Enabled = True 'テキストボックス2の編集不可解除 TextBox2.Locked = False 'ラベル1と2のキャプションを元に戻す Label1.Caption = "TextBox1" Label2.Caption = "TextBox2" End If End With End Sub
Private Sub ToggleButton1_Click()で実際にトグルボタンが押された際の処理を記述します。
ボタンが押された状態⇒ToggleButton1がTrueになりますので、キャプションの文字を変更し、各テキストボックスにEnabled/Lockedプロパティを設定していきます。
構文:オブジェクト.Enabled/Locked=expression
.Enabled = True : 使用可
.Enabled = False : 使用禁止、選択不可
EnabledプロパティをFalseにすると使用禁止となり、Trueで解除されます。このプロパティについてはコマンドボタンに対する使用例として以前投稿しているので、よろしければご参考までに。
.Locked =True : 編集禁止、選択可
.Locked = False : 編集可
LockedプロパティについてはTrueで編集禁止となり、Falseで解除となります。編集は出来ないのですが選択ができるので、テキストボックス内の全文を「Ctrl+c」でコピーするような作業はできます。
これらのプロパティをトグルボタンのクリックで組み合わせることで、テキストボックスの編集可/不可や使用可/不可が切替わる形としています。
3.まとめ
編集できない状態とする上ではEnabledプロパティもLockedプロパティも同様なのですが、視認性が大きく異なる点と選択可/不可の部分が主な差異かと思います。
私はこの辺りのプロパティをパスワード設定等も組み合わせながら設定値など変更制限に利用することも多いので、知っておくと何かと役に立つと思います。機会があればご活用をご検討くださいませ。
以上、Enabled/Lockedプロパティ(編集不可設定)の違いについてでした!今回の記事が何かの参考になれば幸いです。
Ryo