【Excel VBA】 기동시에 실행하는 매크로가 우울한 북을 편집하고 싶을 때의 툴의 작성

1. 이 기사에 관하여



이런 경우를 상정.
《매크로 첨부의 엑셀북을 편집할 때, 기동시에 실행하는 이벤트 프로시저를 작동시키지 않고 기동하고 싶다》
《그 외, 시트 액티브시의 이벤트 등의 「실행하고 싶지 않은 프로시저」를 일단 중단하고 싶다」

2.하고 싶은 일



표제대로입니다.

↓이런 방법도 있는 것 같네요.
h tps : // s 타부 cky. 코 m/wp/아 r ゔぇ s/5052

다만, 상기에 참조시켜 주신 방법이라고 귀찮게 해, 정리해 복수의 북을 열 때에 일일이 같은 일을 해야 하기 때문에,
이번에 작성한 툴로 상기 우려점을 클리어했습니다.

3. 작성한 코드



코드 자체는 매우 간단하고 실제 처리 부분의 스텝 수는 10 가량 정도라고 생각합니다.

(1)



우선 폼 호출 함수가 이와 같이 됩니다(매크로 호출의 쇼트 컷에 등록한다면 이것을 등록하면 편리합니다).

Tools.bas
'******************************************************************************************
'*関数名    :invalidateEvents
'*機能      :ブックのイベントをフォーム表示している間無効にする
'*引数(1)   :無し
'******************************************************************************************
Public Sub invalidateEvents()

    '定数
    Const FUNC_NAME As String = "invalidateEvents"

    '変数

    On Error GoTo ErrorHandler
    '---以下に処理を記述---

    'イベント無効化
    Application.EnableEvents = False

    'フォーム表示
    F_invalidateEvents.Show vbModeless

ExitHandler:

    Exit Sub

ErrorHandler:

        MsgBox "エラーが発生しましたので終了します" & _
                vbLf & _
                "関数名:" & FUNC_NAME & _
                vbLf & _
                "エラー番号" & Err.Number & Chr(13) & Err.Description, vbCritical

        GoTo ExitHandler

End Sub



(2)



위에서 호출하는 양식의 모양과 코드는 다음과 같습니다.



F_invalidateEvents.frm
Option Explicit


'******************************************************************************************
'*関数名    :CommandButton_Close_Click
'*機能      :閉じるボタン押下時処理
'*引数(1)   :
'******************************************************************************************
Private Sub CommandButton_Close_Click()

    '定数
    Const FUNC_NAME As String = "CommandButton_Close_Click"

    '変数

    On Error GoTo ErrorHandler
    '---以下に処理を記述---

    'フォームを閉じる
    Unload F_invalidateEvents

ExitHandler:

    Exit Sub

ErrorHandler:

        MsgBox "エラーが発生しましたので終了します" & _
                vbLf & _
                "関数名:" & FUNC_NAME & _
                vbLf & _
                "エラー番号" & Err.Number & Chr(13) & Err.Description, vbCritical

        GoTo ExitHandler

End Sub



'******************************************************************************************
'*関数名    :UserForm_QueryClose
'*機能      :〇〇○
'*引数(1)   :〇〇○
'******************************************************************************************
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    '定数
    Const FUNC_NAME As String = "UserForm_QueryClose"

    '変数

    On Error GoTo ErrorHandler
    '---以下に処理を記述---

    'イベント有効化
    Application.EnableEvents = True

ExitHandler:

    Exit Sub

ErrorHandler:

        MsgBox "エラーが発生しましたので終了します" & _
                vbLf & _
                "関数名:" & FUNC_NAME & _
                vbLf & _
                "エラー番号" & Err.Number & Chr(13) & Err.Description, vbCritical

        GoTo ExitHandler

End Sub



4. 코드 해설



양식 호출 직전에 이벤트 시스템 프로 시저를 비활성화하고,
닫기 버튼으로 다시 활성화합니다.

vbmodeless를 인수로 설정하고 있기 때문에 폼 표시시에도 엑셀로 작업이 가능합니다.
양식을 표시하는 동안 여러 통합 문서를 시작할 수도 있습니다.

5. 끝에



Github



도구를 올렸으므로 좋으면 참조하십시오.
Github

뭔가 보충이 있으면 댓글주세요.

좋은 웹페이지 즐겨찾기