エクセルVBAでパスワード入力後にシートの保護を解除する方法

Excel

エクセルVBAを使ってシートの保護を解除する際に、パスワードが正しい場合のみ解除するコードは便利ですが、間違ったパスワードを入力した場合にエラーメッセージを表示させる方法について説明します。ここでは、実行時エラーが発生するのを防ぐためのコード修正方法をご紹介します。

1. 現在のコードの問題点

以下のコードでは、パスワードが間違っている場合にエラーが発生してしまいます。

x = Application.InputBox("パスワードを入力してください", Type:=3)
ActiveSheet.Unprotect x

このコードでは、パスワードが間違っていると「実行時エラー’1004’」が表示されるため、エラーメッセージを表示させるためにはエラー処理を追加する必要があります。

2. 正しいパスワードと間違ったパスワードの処理方法

パスワードが正しい場合はシートを保護解除し、間違った場合は「パスワードが違います」と表示させるように、エラー処理を追加する方法を紹介します。

Dim x As String
x = Application.InputBox("パスワードを入力してください", Type:=3)
On Error Resume Next
ActiveSheet.Unprotect x
If Err.Number <> 0 Then
    MsgBox "パスワードが違います"
    Err.Clear
End If

このコードでは、エラー処理を使って、パスワードが間違った場合に「パスワードが違います」とメッセージボックスを表示させることができます。

3. エラー処理の仕組み

エラー処理を使うことで、パスワードが間違っていた場合にもプログラムが強制終了することなく、エラーメッセージを表示して次の処理を実行できます。

「On Error Resume Next」によりエラーを無視して次の行に進み、エラー番号が発生した場合に「Err.Number」でエラーをチェックします。エラーが発生した場合に、「パスワードが違います」というメッセージを表示します。

4. まとめ

エクセルVBAでのパスワードによるシートの保護解除は、エラー処理を使うことで、間違ったパスワードが入力された際にもエラーメッセージを表示し、スムーズなユーザー体験を提供できます。これにより、実行時エラーを回避し、より安全なシート管理ができます。

コメント

タイトルとURLをコピーしました