반응형

안녕하세요 :)

 

https://kim0404.tistory.com/35

 

엑셀 사용법 : VBA-기초(3) 바코드 등록하는 엑셀 만들기-3

안녕하세요 :) VBA 기초 세번째 글이네요 😊 아래 글에서 이어지는 내용이니 참고해주세요 :D https://kim0404.tistory.com/34 엑셀 사용법 : VBA-기초(2) 바코드 등록하는 엑셀 만들기-2 안녕하세요 :) 이전

kim0404.tistory.com

 

VBA-기초(3)에서 이어지는 글입니다 :)

 

 

저 엑셀을 만들다가 생각이 난게 지금껏 만들었던 엑셀은 바코드를 찍고-확인-찍고-확인-찍고-확인...

을 해야한다는 아주 큰 불편함이 생길것 같더라구요 :)

 

그래서 어떻게 할까 생각하다가 Form을 이용해서 찍으면 바로바로 이력에 쌓일 수 있도록 수정했습니다 :)

 

 

위와 같이 간단하게 TextBox의 Change 이벤트를 이용해서 찍자마자 바로 이력 시트에 입력될 수 있도록 만들었어요 :)

 

 

■ TextBox Change 이벤트 코드

Private Sub TextBox1_Change()

    '입력폼 텍스트
    Dim TarTxt
    TarTxt = TextBox1.Value
    
    '바코드길이(F3)
    Dim TarTxtLen
    TarTxtLen = Len(TarTxt)    
    
    '오토체크YN
    Dim AutoChkYn As String
    AutoChkYn = getShData("매크로", 3, "E")
    
    '바코드길이(공통)
    Dim BarCodeLen As Integer
    BarCodeLen = getShData("매크로", 3, "F")
    
    
    '오토체크 Y AND (입력값 = 바코드 길이 or 바코드 길이 0 일때)
    If AutoChkYn = "Y" And (TarTxtLen = BarCodeLen Or BarCodeLen = 0) Then
    
        
        '바코드셀에 입력하고 Run 이벤트
        Call setShData("매크로", 7, "C", TarTxt)
        Call Run_Event
        
        TextBox1.Value = ""    
    
    End If    

End Sub




Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    'MsgBox KeyCode    
    
    'KeyCode 13 = "엔터"
    '엔터 누를때 Run 이벤트 실행
    If KeyCode = 13 Then    
    
        '입력폼 텍스트
        Dim TarTxt
        TarTxt = TextBox1.Value        
    
        '바코드셀에 입력하고 Run 이벤트
        Call setShData("매크로", 7, "C", TarTxt)
        Call Run_Event
        
        TextBox1.Value = ""
    
    End If
End Sub

 

코드를 보게되면 change 이벤트와 keyUp 이벤트가 있는걸 볼수 있습니다 :)

주석을 달아놔서 쉽게 보실 수 있으실꺼에요 :)

 

change 이벤트는 TextBox에 타이핑할때마다 change 이벤트를 타게됩니다.

그래서 오토체크와 바코드 길이가 있는데 

 

오토체크 Y일때 바코드 길이셀과 입력한 바코드의 길이가 같다면 자동으로 확인되어 이력에 쌓일 수 있도록 했습니다.

 

* 오토체크 = Y        바코드길이셀  = 6

12345 <<< 까지 TextBox에 입력되다가 123456 << 6을 입력하게 되면 이력에 쌓이는거죠 ㅎㅎ

 

이건 수기로 입력할때 사용하는 거고 바코드를 찍게되면 길이를 모르니까

바코드 길이를 0으로 놓으면 어떤 값이든 길이에 상관없이 이력에 기록되도록 설정했습니다 :)

 

 If AutoChkYn = "Y" And (TarTxtLen = BarCodeLen Or BarCodeLen = 0) Then ....  

 

그리고 이 조건에 만족한다면

바코드 셀에 TextBox 값을 입력하고

Call Run_Event를 하게 되는거죠 ㅎㅎ

 

KeyUp 이벤트의 경우 혹여나 수기로 입력할 때, 바코드 길이가 다를때 엔터버튼으로 기록할 수 있도록 했습니다 :)

 

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    'MsgBox KeyCode    
    
    'KeyCode 13 = "엔터"
    '엔터 누를때 Run 이벤트 실행
    If KeyCode = 13 Then

 

MsgBox를 통해 KeyCode를 찍어보게 되면 키보드를 입력할 때마다 숫자가 바뀌는것을 알 수 있는데요.

그 숫자가 키보드와 매핑되어있는 숫자입니다 :)

 

엔터를 눌러보게 되면 13의 숫자가 나오는데, 엔터를 누를때 Run_Event를 실행 시키는 코드입니다 :)

 

아래 제가 만들었던 엑셀파일을 첨부해 놓을테니 뜯어보세요 ㅎㅎ

 

이상 VBA 기초 바코드 등록하는 엑셀만들기 였습니다 :)

 

다음에는 다른 작업물로 돌아올께요 

 

 

 

 

매크로_사용문서_v2.xlsm
0.06MB

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts