コントロールを編集不可に設定する(Lockedプロパティ)
ユーザーフォームに設置したコントロールに対して Locked プロパティを設定することでコントロールを編集できない状態にすることができます。例えばテキストボックスの場合は値を編集できなくなります。ここでは Excel のユーザーフォームで Locked プロパティを使ってコントロールを編集不可に設定する方法について解説します。
(Last modified: )
コントロールを編集不可に設定する
コントロールを編集不可に設定するには Locked
プロパティを使用します。例えばユーザーフォームに設置したテキストボックスの Locked
プロパティの値はデフォルトで「False」となっておりテキストボックスは編集可能となっています。
ユーザーフォームの実行をクリックしてユーザーフォームを実際に表示してみると、テキストボックスが編集可能であることが確認できます。
コントロールを編集不可にするには、 Locked
プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし、「True」をクリックしてください。
テキストボックスが編集不可に設定されました。
テキストボックスが編集不可になると、テキストボックスの内容を編集することができなくなります。ユーザーフォームの実行をクリックしてユーザーフォームを実際に表示してみるとテキストボックスが編集不可になっていることが確認できます。(編集不可でもフォーカスを移すことはできます。編集だけが行えません)。
このように Locked
プロパティの値を変更することで、コントロールを編集不可に設定することができます。
VBAのプログラムの中でLockedプロパティを設定する
プロパティウィンドウを使って Locked
プロパティの値を変更する代わりに、 VBA のコードを記述して Locked
プロパティの値を変更することもできます。
プログラムの中で Locked
プロパティを設定する場合は次の書式を使用します。
オブジェクト.Locked [= Boolean ]
対象のオブジェクトの Locked
プロパティに対して「True」または「False」を代入します。
True を設定した場合はコントロールは編集可となります。また「False」を設定した場合はコントロールは編集不可となります。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で Locked
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。
Private Sub UserForm_Initialize() TextBox1.Locked = False TextBox2.Locked = True End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。追加されている上のテキストボックスが編集可となり、下のテキストボックスが編集不可となっています。
見ただけでは分かりにくいですが上のテキストボックスは値を編集することができますが、下のテキストボックスは値を編集できません。
このように VBA のプログラムの中で Locked
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで Locked プロパティを使ってコントロールを編集不可に設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。