2012-12-03 4 views
1

나는 vba에서 매우 뛰어나다. 나는 vba excel에서 보고서 서식 작업을위한 작은 도구를 개발하려고합니다. 단추 아래에 코드를 놓으면 양식이 언로드되지만 msgbox의 단추를 재정 의하여 전체 userform을 언로드 할 수 있습니까?VBA에서 사용자 폼을 언로드하려면 msgbox 단추를 재정의하는 방법?

Unload UserForm1 
+0

무슨 뜻인지 전혀 모르겠다. 버튼을 클릭하여 사용자 정의 폼을 닫으려고한다는 것을 의미합니까? – Chris

+0

예. 사용자가 msgbox –

답변

2

나는 당신의 질문은 당신이 MSGBOX가 값을 반환 할 수 있음을 알고있다 (I 내가 할 모르겠어요와 크리스처럼) 제대로 이해하고 당신은 당신의 양식을 닫으려면이 값을 사용할 수 있다면? 예를 들어, 첫 번째는 값을 반환, 두 번째는하지 않습니다

Dim l As Long 

l = MsgBox("What do you want to do?", vbOKCancel) 

If l = vbCancel Then 
    Unload UserForm1 
Else 
    MsgBox "You selected 'OK'" 
End If 

당신은 양식을 언로드 MSGBOX라는 코드를 알려 반환 값 (L)를 사용할 수 있습니다.

+0

Alan의 버튼을 클릭했을 때 프로그램이 완전히 닫히기를 바란다. 답변 감사합니다. 시도 할 때 두 개의 버튼이있는 msgbox를 제공합니다. (확인 및 취소) 확인 단추를 클릭하면 폼을 언로드하지 않고 코드의 Else 문으로 넘어갑니다. 그러나 취소 버튼을 클릭하면 작동합니다. : S –

+2

네, 위의 코드를 읽는다면 그것이 의도 한 바입니다. 이 그림을 통해 메시지 상자에 전달되는 인수 (이 경우 vbOkCancel) 및 각 단추가 다른 값 (이 경우 vbCancel 또는 vbOK)을 반환하는 방식에 따라 메시지 상자에 다른 단추가있을 수있는 방법을 설명했습니다. 사용자가 클릭하는 버튼에 따라 수행 할 작업을 선택하기 위해 여기에서 수행 한 것처럼 If 블록을 사용할 수 있습니다. 단 하나의 버튼 만 사용하려는 경우 vbOKOnly 인수를 사용합니다.이 경우 If 문이 필요하지 않습니다. msgbox 뒤의 다음 줄에있는 폼을 언로드하면된다. –

+0

그래 그럼. 나는'vbOKOnly'을 사용했고'If'와'Else' 문장 모두에서'Unload UserForm1'을 썼습니다. 그게 내 문제를 해결 :) MsgBox는 자바의 스윙처럼 재정의 될 수 있다고 짐작하기 전에 - JOptionPane하지만 어떻게해야할지 모르겠다. 그래서 여기에 대한 질문이 될 것이라고 생각했다. 당신의 도움에 감사드립니다. –

관련 문제