簡易なパスワード入力/照合のマクロ。
マクロ 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