Excelのブックのユーザーが最初のシートを保護せずにブックを閉じるのを防ぐための短いマクロを作成しようとしています。BeforeClose VBAイベントをキャンセルするときにブックを閉じる
コードは、メッセージボックスを表示しますが、その後、ブックを閉じます。私の理解から、 "キャンセル"パラメータがTrueに設定されている場合は、ブックを閉じてはいけません。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets(1).ProtectContents = True Then
Cancel = False
Else
MsgBox "Please Protect 'Unique Futures' Worksheet Before Closing Workbook"
Cancel = True
End If
End Sub
メッセージボックスを表示し、最初のシートが保護されていない場合は閉じないようにするコードが必要です。
私はちょうどCancel = Not Sheets(1).ProtectContentsを試してみましたが、うまくいきました。コードを踏んだことはありますか? –
インデックス1のワークシートが実際にテストしているシートを指していることは確かですか? VBEのイミディエイトウィンドウを使用してこれを簡単にテストできます。 Ctrl + Gキーを押してイミディエイトウィンドウを開き、 '?Sheets(1).Name'と入力します) – user3561813
新しいブックのThisWorkbookモジュールにコードを貼り付けました。私はそれを閉じようとしたときにメッセージを受け取り、ワークブックは開いたままになりました。それで、それは私のために働いた。私はMsgBoxをどうやって手に入れるか考えていませんが、キャンセルはしません。 –