2016-08-04 29 views
0

ブックを閉じる前に実行する保護機能を呼び出そうとしていますが、機能していません。 (WorkBook_BeforeCloseに呼び出されたときに保護サブは、自分自身で正常に動作しなく)VBCのBeforeCloseイベントが呼び出されない関数を呼び出す

これは、モジュール1で見つかったコードです:

Public Sub protect() 

Dim index As Integer 
index = 1 

Do While index <= ActiveWorkbook.Worksheets.Count 
ActiveWorkbook.Sheets(index).Activate 
If ActiveSheet.Name <> "README" Then 
    ActiveSheet.unprotect 
    Cells.Select 
    Selection.Locked = True 
    Selection.FormulaHidden = False 
    ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True 
    ActiveSheet.Range("A1").Select 
End If 
index = index + 1 
Loop 

ActiveWorkbook.Sheets(1).Activate 

End Sub 

これははThisWorkbookで見つかったコードです:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Call protect 
End Sub 
+1

StackOverflowへようこそ、コードガール。 「それは働いていない」と言ったとき、どういう意味ですか?コードが実行されている間にエラーが発生しているか、シートが保護されていないために(一見)実行されていませんか?後者の2つのケースを前提とするならば、(コードが実行されているかどうか)確かに 'MsgBox'を挿入します。また、 '_BeforeClose'イベントをどのように起動させますか?ファイルを閉じるか(Excelを開いたままにしますか)、またはExcelを終了しますか? – Ralph

+0

私は問題のkinfdを取得すると、 'debug.print now、" Protect(または任意のモジュール名)のようなコードにここに挿入します。 –

+0

コードがまったく実行されていません。メッセージボックスを挿入したが、ファイルを閉じる前に表示されたが、保護サブはまだ実行されませんでした:/ BeforeCloseイベントはファイルを閉じるとトリガされ、閉じる前に変更を保存するかどうか尋ねられます。保存せずにキャンセルを選択しても、保存するようメッセージが表示される前にコードが実行される –

答えて

0

私は保護サブと同様に正確な問題を抱えていました。 dev1998が正しいことが判明し、ワークブックでサブを見つけるのが難しかった。試してみてください "Call Module1.Protect"、またはModule1の代わりにプロテクトサブがあるモジュール

関連する問題