2016-09-17 2 views
-1

VBA Form의 코드에서 양식을 닫을 때 프로 시저를 호출하고 싶지만 디자인 뷰를 입력하면 실행하지 않습니다.Form Close에서 프로 시저를 실행하는 방법 Form을 편집하는 방법

코드에서 어떻게 구별 할 수 있습니까?

Private Sub Form_Close() 
    'If NotFormEdit then <--or something? 
    Call MyProcedure() 
End Sub 

이 종료하기 전에 양식에서 데이터를 가져올 것으로 기대 때문에 내가 디자인보기를 입력하지만, 그것이 디자인보기를 입력하면 그렇게 할 수없는 코드 오류가.

일반적으로 디자인보기를 입력 할 수있는 유일한 사람이지만 다른 사용자가 양식을 닫을 때도 프로 시저를 실행해야합니다.

나는 오류를 던져서 얻을 수 있고, 나는 그것이 올바른 습관이 아님을 안다. 및 양식 디자인보기를 입력 가까운 형태를 구별 할 수있는 방법이없는 경우

, 나는 다른 무엇을 할 수 있습니까?

+0

디자인보기로 전환하면 어떻게됩니까? 당신은이 사건들을 구분할 수 없다고 생각합니다. – Andre

+0

오류를 통해 구별 할 수있는 방법이 있습니까? – bgmCoder

+0

편집 모드에서 디자인 뷰로 전환하는 사용자가 있습니까? 아니면 그냥 너 니? – dbmitch

답변

1

귀하의 질문은 지금 훨씬 명확합니다.

내가 할 수있는 유일한 방법은 호출 된 프로 시저에서 양식 상태를 테스트하는 것입니다. 그러나 나 (Access 2010)의 경우 닫기 이벤트와 호출 된 프로 시저가 실행되고 전에 전에 디자인보기로 전환 실제로 완료됩니다.

(편집 :. 난 그냥이 Krish 수출 위에서 자신의 의견에 쓴 기본적으로 나타났습니다)

Public Sub MyProcedure() 

    ' Is form loaded? 
    If SysCmd(acSysCmdGetObjectState, acForm, "frmStart") = 0 Then 
     Debug.Print "Form is not loaded!" 
     Exit Sub 
    End If 

    If Form_frmStart.CurrentView = 0 Then 
     Debug.Print "Form is opened in Design view!" 
     Exit Sub 
    End If 

    ' This is reached and works for me if I switch frmStart to Design view! 
    MsgBox Form_frmStart.product 

End Sub 

문제가 해결되지 않으면 귀하의 질문에 MyProcedure()의 코드를 추가하고,를 지정하세요 오류 위치 및 메시지.

관련 문제