テキストボックスで代わりに表示する伏字を設定する(PasswordCharプロパティ)

ユーザーフォームに設置したテキストボックスで、入力された文字がそのまま表示されないように代わりに表示する伏字の文字を設定するには PasswordChar プロパティを使用します。ここでは Excel のユーザーフォームで PasswordChar プロパティを使ってテキストボックスで入力した文字の代わりに表示する伏字を設定する方法について解説します。

(Last modified: )

入力文字の代わりに表示する伏字を設定する

テキストボックスをパスワードの入力などに使用する場合、入力された文字がそのまま表示されないように別の文字を代わりに表示するように設定するには PasswordChar プロパティを使用します。デフォルトでは PasswordChar の値は長さが 0 の文字列 ("") となっています。デフォルトの設定の場合は文字の置き換えは行われません。

入力文字の代わりに表示する伏字を設定する(1)

例えば伏字として * を指定した場合、入力した文字の代わりに * が表示されます。例えば ABC と入力した場合に、代わりに *** と表示します。伏字で使用する文字を設定するには PasswordChar プロパティをクリックし、値を直接編集してください。

入力文字の代わりに表示する伏字を設定する(2)

ユーザーフォームを実際に表示し、テキストボックスに値を入力してみると、入力した文字の代わりに設定した伏字が表示されます。

入力文字の代わりに表示する伏字を設定する(3)

なお PasswordChar プロパティに複数の文字を入力してもエラーにはなりませんが、使用されるのは最初の文字だけです。また半角文字だけでなく全角文字でも指定できます。

また PasswordChar プロパティに値を設定すると、テキストボックスには半角文字の値しか入力できなくなります。ただし全角文字で別の場所に入力したものをコピーしてテキストボックスに貼り付けることはできるようです。

このように PasswordChar プロパティの値を変更することで、テキストボックスで使用される入力文字の代わりに表示する文字を設定することができます。

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

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

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

オブジェクト.PasswordChar [= String ]

対象のオブジェクトの PasswordChar プロパティに対して、代わりに表示される文字列を代入してください。

文字列として空文字 "" を代入した場合は入力した文字がそのまま表示されます。

サンプルコード

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

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

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

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

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

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

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

またコマンドボタンがクリックされるたびに伏字の使用と解除を交互に行うようにするため、コマンドボタンの Click イベントに対すするイベントプロシージャを次のように記述しました。

Private Sub UserForm_Initialize()
    TextBox1.PasswordChar = "*"
End Sub

Private Sub CommandButton1_Click()
    If TextBox1.PasswordChar = "*" Then
        TextBox1.PasswordChar = ""
    Else
        TextBox1.PasswordChar = "*"
    End If
End Sub

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

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

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

ユーザーフォームが表示されました。テキストボックスに文字を入力してみると、入力した文字がそのまま表示される代わりに設定した文字が表示されます。

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

テキストボックスの横にあるコマンドボタンをクリックすると、入力した文字がそのまま表示されるのと指定した文字で置き換えられて表示される状態が交互に切り替わります。

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

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

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

-- --

Excel のユーザーフォームで PasswordChar プロパティを使ってテキストボックスで入力した文字の代わりに表示する伏字を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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