コントロールを編集不可に設定する(Lockedプロパティ)

ユーザーフォームに設置したコントロールに対して Locked プロパティを設定することでコントロールを編集できない状態にすることができます。例えばテキストボックスの場合は値を編集できなくなります。ここでは Excel のユーザーフォームで Locked プロパティを使ってコントロールを編集不可に設定する方法について解説します。

(Last modified: )

コントロールを編集不可に設定する

コントロールを編集不可に設定するには Locked プロパティを使用します。例えばユーザーフォームに設置したテキストボックスの Locked プロパティの値はデフォルトで「False」となっておりテキストボックスは編集可能となっています。

コントロールを編集不可に設定する(1)

ユーザーフォームの実行をクリックしてユーザーフォームを実際に表示してみると、テキストボックスが編集可能であることが確認できます。

コントロールを編集不可に設定する(2)

コントロールを編集不可にするには、 Locked プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし、「True」をクリックしてください。

コントロールを編集不可に設定する(3)

テキストボックスが編集不可に設定されました。

コントロールを編集不可に設定する(4)

テキストボックスが編集不可になると、テキストボックスの内容を編集することができなくなります。ユーザーフォームの実行をクリックしてユーザーフォームを実際に表示してみるとテキストボックスが編集不可になっていることが確認できます。(編集不可でもフォーカスを移すことはできます。編集だけが行えません)。

コントロールを編集不可に設定する(5)

このように Locked プロパティの値を変更することで、コントロールを編集不可に設定することができます。

VBAのプログラムの中でLockedプロパティを設定する

プロパティウィンドウを使って Locked プロパティの値を変更する代わりに、 VBA のコードを記述して Locked プロパティの値を変更することもできます。

プログラムの中で Locked プロパティを設定する場合は次の書式を使用します。

オブジェクト.Locked [= Boolean ]

対象のオブジェクトの Locked プロパティに対して「True」または「False」を代入します。

True を設定した場合はコントロールは編集可となります。また「False」を設定した場合はコントロールは編集不可となります。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で Locked プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でLockedプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でLockedプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    TextBox1.Locked = False
    TextBox2.Locked = True
End Sub

VBAのプログラムの中でLockedプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でLockedプロパティを設定する(4)

ユーザーフォームが表示されました。追加されている上のテキストボックスが編集可となり、下のテキストボックスが編集不可となっています。

VBAのプログラムの中でLockedプロパティを設定する(5)

見ただけでは分かりにくいですが上のテキストボックスは値を編集することができますが、下のテキストボックスは値を編集できません。

VBAのプログラムの中でLockedプロパティを設定する(6)

このように VBA のプログラムの中で Locked プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで Locked プロパティを使ってコントロールを編集不可に設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。