
エクセルのユーザーフォームでパスワード入力フォームを作る

VBAを使って作成したエクセルファイルを自分以外の人に使ってもらう為に作った事ありませんか?
そんな時に触って欲しくない部分や設定などは作成者でもある自分だけが触れるように、パスワードを使って制限すれば解決するので、ユーザーフォームで簡単にパスワード入力フォームを作りましょう。
パスワード入力フォーム作成手順
実際に作業をする手順に従ってVBAコードを書いて行けばいいので、作業の流れをイメージします。
- ユーザーフォームに配置した設定ボタンを押す
- パスワード入力用のユーザーフォームを表示する
- パスワード入力する
- 正しいパスワードが入力されたら次へ進める
- 誤ったパスワードの場合はメッセージを出す
それでは実際にVBAコードを書いていきます。
設定ボタン(コマンドボタン)のVBAコード
まず最初に既存のユーザーフォームを閉じて、パスワード入力用のユーザーフォームを表示するためのVBAコードをコマンドボタンに書きます。
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Show
Else
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を閉じる
- ユーザーフォーム2を表示する
- マクロ記録終了
特に難しい事はありませんね。
それでは本題のパスワード入力用のユーザーフォームを取り掛かります。
パスワード入力用フォームのVBAコード
設定するパスワードは半角数字の4桁「1234」とします。
Private Sub CommandButton1_Click()
If TextBox1 = “1234” Then
Unload UserForm2
UserForm3.Show
Else
MsgBox “パスワードが異なっています” & vbCrLf & “再入力してください”, vbExclamation
With TextBox1
.Value = “”
.SetFocus
End With
End If
End Sub
- コマンドボタン1がクリックされたら
- もしテキストボックス1に1234と入力されたら
- ユーザーフォーム2を閉じる
- ユーザーフォーム3を表示する
- そうでなかったら(1234以外だったら)
- 1行目「パスワードが異なっています」2行目「再入力してください」で注意アイコンをつけてメッセージ表示する
- テキストボックス1の設定をする
- 空欄にする
- すぐに入力できるようにフォーカスを移動する
- Withステートメント終了
- Ifステートメント終了
- マクロ記録終了
これでパスワード作業手順に従ってVBAコードを書いたので、パスワード入力フォームが出来上がりましたが、ちょっと工夫して体裁を整えましょう。
入力文字を自動的に****にする
パスワード入力すると文字がそのままなので、見た目の体裁を整えるためパスワード入力用フォーム自体に以下の3つ書き足しましょう。
- 入力文字を半角英数字に自動的に変更
- 入力文字位置を中央にする
- 入力文字を自動的に****に変更
書き足す部分はパスワード入力用のユーザーフォーム自体に書き込みますので、ユーザーフォーム自体をクリックすると、下記のように自動的に書き込まれます。
Private Sub UserForm_Click()
End Sub
_Clickの部分を_Initializeに変えて書き足します。
Private Sub UserForm_Initialize()
With TextBox1
.IMEMode = fmIMEModeAlpha
.TextAlign = fmTextAlignCenter
.PasswordChar = “*”
End With
End Sub
- ユーザーフォームを表示する時に下記VBAコードを設定する
- テキストボックス1の設定をする
- 入力モードを半角英数字にする
- 文字位置を中央にする
- 入力文字を*で表示する
- Withステートメント終了
- マクロ記録終了
以上でパスワード入力用フォームをユーザーフォームで作ることができます。