2012-05-23 3 views
0

사용자의 세부 정보 및 사용자의 인벤토리를 표시하기 위해 3 개의 하위 양식이있는 양식을 만들었습니다. 이 양식을 사용하면 표시된 세부 정보를 업데이트 할 수 있습니다. 따라서 각 하위 양식에는 '저장'및 '실행 취소'버튼이 있습니다. 모든 3 개의 하위 폼에있는 모든 변경 내용을 취소하는 부모 폼에 "모두 지우기"단추를 만들려고합니다.액세스 2007 년 하위 폼의 명령 단추에서 "OnClick"기능을 동적으로 활성화하십시오.

3 개의 "실행 취소"버튼에 사용 된 것과 동일한 코드를 다시 입력하고 싶지 않으므로 3 버튼의 Onclick 기능을 사용할 수있는 방법이 있습니까?

Private Sub ClearAllParentForm_Click() 
    Me.Subform1.Form.clearButton_Click 
End Sub 

그러나 양식 대신 하위 폼의 beforeupdate 이벤트 (업데이트 된 레코드를 저장하는 사용자를 묻는 메시지 박스)를 호출 :

나는 첫 번째 하위 폼에 다음과 같은 시도했습니다. 또한 같은 문제가 발생하는 Me.Subform1.Form.Undo 코드를 변경하려고했습니다. 내가 잘못한 곳이나 내 개념이 잘못되어 있습니까?

죄송합니다. 최근에 Microsoft Access 2007을 사용하기 시작 했으므로 최근에 일부 항목과 혼동되었습니다.

답변

0

@ JeffO가 맞지만 조금 더 많은 지침을 통해 그가 강조한 내용을 확장 할 것입니다.

당신이 워크 시트 모듈에서 다음과 같은 경우 :

Private Sub ClearButton_Click() 
    'ClearButton code here. 
End Sub 

당신은 일반 모듈에서 하위에 ClearButton 코드를 이동해야합니다.

Private Sub ClearButton_Click() 
    Call clearbtn 
End Sub 

는 이벤트 트리거에 이러한 변경 사항을 만들기 : 당신이 한 줄에 버튼을 클릭 할 때이 코드를 호출

Sub clearbtn() 
    'ClearButton code here. 
End Sub 

이제, 워크 시트 모듈 : 그래서 새 모듈에 다음과 같은 필요 코드의 다른 부분에서 사용할 수 있습니다. 여기서 암묵적인 교훈은 VBA의 다른 곳에서 이벤트 트리거 하위를 호출 할 수 없다는 것입니다. 그러나 이벤트 트리거 내에서 다른 하위를 호출 할 수 있습니다.

+0

대단해! 그것은 작동합니다! 두 분 모두에게 정말 고마워요. 두 가지 질문이 있다면 모두 한 가지 질문입니다. 공용 폼을 각 하위 폼에 배치하는 대신 일반 모듈을 사용하는 데 차이가 있습니까? 그런 다음 기본 폼에서 하위 폼을 호출합니까? 이후로는이 상위 양식에서만 지우기 버튼 코드 만 사용하고 있기 때문에 – user1140240

1

버튼의 클릭 이벤트와 별도로 세 개의 하위 루틴이 필요합니다. 각 버튼이 각각의 서브 루틴 또는 기능을 호출하게하십시오. 그런 다음 하나의 단일 버튼으로 3 개 모두를 호출 할 수 있습니다.

관련 문제