簡易なパスワード入力/照合のマクロ。
マクロ RequestPassWord() を実行すると、パスワードの入力を促すフォームを表示し、正しいパスワードを入力するか、「X」でフォームを消すかするまで表示し続けます。
とても安直な照合ですので、コードを見ればすぐに見破られてしまいますが、このマクロを使ってパスワードを入れないとコードにアクセスできないようにしておけば、リスクは減らせます。ユーザーが自由にコードを改竄されるのを避ける時などに使えそうです。
ユーザーフォーム PassWordForm
Private Const incorrectLetter = "????????" Private Const passWordLetter = "passWord" '--- 入力欄の初期化 Private Sub UserForm_Activate() PassWordTextBox.text = "" End Sub '--- 「X」でクローズした場合 Private Sub UserForm_QueryClose(cancel As Integer, CloseMode As Integer) Confirmed = False End Sub '--- テキスト入力後 Enter キーを押した場合 Private Sub PassWordTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then checkPassWord If Not Confirmed Then Exit Sub Me.Hide End If End Sub '--- パスワードの照合 Private Sub checkPassWord() With PassWordTextBox Confirmed = (.text = passWordLetter) If Not Confirmed Then Beep .text = incorrectLetter .SetFocus .SelStart = 0 .SelLength = Len(.text) End If End With End Sub
標準モジュールからは、RequestPassWord() で PassWordForm の表示を行います。
表示が終わって帰ってきた時には、Confirmed を参照すれば照合結果が得られます。
標準モジュール RequestPassWord()
'--- 照合結果 Public Confirmed As Boolean '--- フォームを表示して照合 Public Sub RequestPassWord() PassWordForm.Show vbModal End Sub