나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 양재호 (korjaeho)

추천:  2
파일:     조회:  1394
제목:   유저폼에서 텍스트박스에 사용자가 입력하는지 여부를 체크
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(2007):

* 아래줄에 질문을 작성하세요 >>

안녕하세요

유저폼에 넣은 텍스트박스에 숫자가 들어가는데
옆에 콤보를 선택해도 숫자가 들어가고, 직접입력을 해도 됩니다

근데 직접 입력한건지, 콤보를 선택해서 코드가 숫자를 넣어준건지를
구분할 수 있는 방법이 있을까요?

텍스트박스 이벤트에서 내용이 변경됐을때 
직접입력이면 A작업을, 콤보선택이면 B작업을 시키려고 합니다.
 
[불량 게시물 신고]  
조삿갓Dim ev As Boolean

Private Sub ComboBox1_Change()
  If ev Then
    ev = False
    TextBox1 = ComboBox1
    MsgBox "B작업"
    ev = True
  End If
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Not Cancel And ev Then
    ev = False
    ComboBox1 = TextBox1
    MsgBox "A작업"
    ev = True
  End If
End Sub

Private Sub UserForm_Activate()
    ev = True
'   콤보박스 목록 초기화 등 작업
End Sub
08-04 (21:38)
삭제 ■신고
조삿갓어차피 텍스트박스에 직접 입력하는 경우와
콤보박스를 선택하는 경우에 발생하는 이벤트가 다르기 때문에
A작업과 B작업을 구분 처리하는 것은 어렵지 않습니다.

문제는 이 두 개의 콘트롤이 서로 연동되게 하고 싶으시겠죠.
이 때 그냥 대입문을 써서 연동을 시키면
그 즉시 또 이벤트가 발생하기 때문에 곤란한 문제가 생깁니다.

실험해 본 결과에 의하면
Application.EnableEvent 속성을 직접 조작하는 방법으로는
잘 콘트롤이 안되는 경우가 있어서
위와 같이 별도의 전역변수 EV를 이용하면 됩니다.

위 코드를 응용해 보시기 바랍니다.
08-04 (21:42)
삭제 ■신고
        
  

작성일 : 2018-08-02(14:20)
최종수정일 : 2018-08-02(14:20)