유저폼 텍스트박스에서 바코드기로 QR 인식 할때 문자 짤림 현상 해결방법

VBA
작성자
상큼애플
작성일
2023-11-16 11:44
조회
124
엑셀버전 : 엑셀2013

운영체제 : 기타

질문 요약 : QR코드 바코드인식

안녕하세요. VBA에서 물품 재고 관리를 위해

물품별로 고유번호를 QR 코드로 뽑아서 물품에 부착하고,

보관장소 이동시 보관장소와 고유번호를 바코드로 QR찍어서 기록 하도록 하려고 VBA 만들던 도중 막혀서 글 올립니다.

바코드로 QR코드를 인식하면 텍스트박스에서 첫글자만 읽고 매크로가 실행되는 현상이 발생합니다.

제가 생각 한데로 잘 안되네요ㅠ 고수님들의 도움 받고자 합니다.

도움 부탁드립니다.ㅠ

 

 

 
Private Sub TextBox1_Change()
 
Static x As Integer
Static y As Integer
Dim xval As String
Dim yval As String
Dim a As String: Dim b As Integer: Dim f As Range: Dim i As Integer
 
MsgBox TextBox1.Value
 
If Len(TextBox1.Value) <> 4 And Len(TextBox1.Value) <> 15 Then Exit Sub
 
 
If Len(TextBox1.Value) = 4 Then '보관위치는 4자리 (예시: 201A)
    xval = TextBox1.Value
    x = 23 '목록중 보관위치의 열번호
 
 
ElseIf Len(TextBox1.Value) = 15 Then '물품의 고유번호 15자리 (예시:ABC123231116934)
    yval = TextBox1.Value
 
    With ActiveSheet.UsedRange
        Set f = .Find(what:=yval, LookIn:=xlValues, lookat:=xlWhole)
 
        If Not f Is Nothing Then
 
        a = f.Address
 
        Do
            Set f = .FindNext(f)
 
        Loop While Not f Is Nothing And f.Address <> a
        y = f.Row
 
        End If
    End With
End If
 
If Not x = 0 And Not y = 0 Then
    Cells(y, x).Value = xval
    x = 0
    y = 0
 
 
End If
 
TextBox1.Text = ""
 
MsgBox x & Chr(10) & y & Chr(10) & xval
 
End Sub

 

신고
스크랩
공유
회원등급 : 4레벨
포인트 : 155 EP
총질문 : 2 개 (마감율 : 100%)
채택답변 : 0 개
전체 10

  • 2023-11-16 11:52

    @상큼애플 님 Change이벤트가 아니라 Exit이벤트에서 처리하도록 하는 게 좋을 듯 합니다.


    • 2023-11-16 15:39

      @원조백수 님 답변 감사합니다! exit로 해보았는데 유저폼을 나가야 매크로가 실행 되는데 혹시 바코드 찍었을때 자동인식하여 매크로가 실행 하게끔 할 수 있는 방법이 있을까요?


      • 2023-11-16 15:43

        @상큼애플 님 텍스트 박스를 선택해 보면 아래의 이벤트를 사용할 수 있을텐데요.

        Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

        End Sub


        • 2023-11-16 16:25

          @원조백수 님 덕분에 아래와 같이 이벤트 변경 하고 텍스트 박스에 바코드 찍으면 고유번호 모든자릿수가 찍히는거 까지 해결하였습니다. 그 후에 매크로가 자동 실행 되지 않는데ㅜ

          혹시 아래와 같이 하는게 맞을까요?

           

          Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
          
          Static x As Integer
          Static y As Integer
          Dim xval As String
          Dim yval As String
          Dim a As String: Dim b As Integer: Dim f As Range: Dim i As Integer
          
          MsgBox TextBox1.Value
          
          If Len(TextBox1.Value) <> 4 And Len(TextBox1.Value) <> 15 Then Exit Sub
          
          
          If Len(TextBox1.Value) = 4 Then 
              xval = TextBox1.Value
              x = 23 
          
          
          ElseIf Len(TextBox1.Value) = 15 Then
              yval = TextBox1.Value
              
              With ActiveSheet.UsedRange
                  Set f = .Find(what:=yval, LookIn:=xlValues, lookat:=xlWhole)
                  
                  If Not f Is Nothing Then
                  
                  a = f.Address
                  
                  Do
                      Set f = .FindNext(f)
                      
                  Loop While Not f Is Nothing And f.Address <> a
                  y = f.Row
                  
                  End If
              End With
          End If
          
          If Not x = 0 And Not y = 0 Then
              Cells(y, x).Value = xval
              x = 0
              y = 0
              
              
          End If
          
          TextBox1.Text = ""
          
          MsgBox x & Chr(10) & y & Chr(10) & xval
          
          End Sub
          


          • 2023-11-16 16:43

            @상큼애플 님 바코드를 찍으면 텍스트박스에 데이터가 입력이 되고,,, 커서가 그 텍스트 박스 안에 있나요?
            아니면 다른 컨트롤로 포커스가 옮겨 가나요?
            다른 컨트롤로 옮겨 가지 않으면 Exit 이벤트가 Fire 되지 않습니다.
            바코드 리더기에서 읽고 나면 끝에 줄바꿈이나 탭을 추가하도록 설정할 수도 있고...


            • 2023-11-16 17:20

              @원조백수 님 아... 커서가 그대로 있습니다. 그럼 바코드리더기를 qr코드를 읽은 후 엔터를 치도록 설정을 해봐야겠네요. 친절한 답변 감사드립니다!

              현재 유저폼에 텍스트박스 하나만 있는데, 바코드리더기에 엔터설정을 추가하고, 유저폼에 명령단추(컨트롤등)을 추가 해줘야 자동 실행이 될까요?


              • 2023-11-16 17:43
                채택된 답변

                @상큼애플 님 어떤 컨트롤이 되었든 Focus가 옮겨갈 수 있는 컨트롤 하나 추가하고
                Enter나 Tab을 바코드 리더기에서 추가해주면 촉발되지 않을까 싶습니다.


                • 2023-11-17 16:24

                  @원조백수 님 님 덕분에 대부분 해결 되어 정말 감사드립니다!!

                  그리고 한가지 기능을 넣고 싶어 질문 드립니다.

                  포커스가 옮겨 가고 매크로 실행 완료후 textbox1에 포커스가 옮겨가게 하려고 합니다.

                  마지막줄에 textbox1.setfocus 가 먹히지 않아서 Application.SendKeys "{tab}" 사용하여 포커스를 옮겨 가는데 성공 했습니다. 하지만 처음 한번 입력할때만 옮겨가고 두번째 에서는 Application.SendKeys "{tab}" 이 또한 먹히지 않고 포커스가 커맨트 버튼에 유지 됩니다. 혹시 해결 할수 있는 방법이 잇을까요?

                   

                  Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
                  
                  Static x As Integer
                  Static y As Integer
                  
                  Dim xval As String
                  Dim yval As String
                  Dim day As Integer
                  Dim a As String: Dim b As Integer: Dim f As Range: Dim i As Integer
                  
                  If Len(TextBox1.Value) <> 4 And Len(TextBox1.Value) <> 15 Then Exit Sub
                  
                  If Len(TextBox1.Value) = 4 Then
                      xval = TextBox1.Value
                      x = 23 '보관위치(w):23
                      
                  ElseIf TextBox1.Value = "개봉" Then
                      x = 20
                  
                  ElseIf TextBox1.Value = "폐기" Then
                      x = 24
                  
                  ElseIf Len(TextBox1.Value) = 15 Then
                      yval = TextBox1.Value
                      
                      With ActiveSheet.UsedRange
                          Set f = .Find(what:=yval, LookIn:=xlValues, lookat:=xlWhole)
                          
                          If Not f Is Nothing Then
                          
                          a = f.Address
                          
                          Do
                              Set f = .FindNext(f)
                              b = b + 1
                          Loop While Not f Is Nothing And f.Address <> a
                          y = f.Row
                          
                          End If
                      End With
                  End If
                  
                  If Not x = 0 And Not y = 0 Then
                      
                      If x = 23 Then
                          Cells(y, x).Value = xval
                          x = 0
                          y = 0
                      ElseIf x = 20 Or x = 24 Then
                          Cells(y, x).Value = Date
                          If x = 24 Then Cells(y, x).Office(, 1).Value = TextBox1.Value
                          x = 0
                          y = 0
                      End If
                      
                  End If
                  
                  TextBox1.Text = ""
                  
                  Application.SendKeys "{tab}"
                  
                  End Sub

                   


                  • 2023-11-17 18:07

                    @상큼애플 님 해 보지는 않았는데,
                    맨 마지막에 SendKey 대신에 Cancel = True 를 넣어 보시면 어떨까요?

                    TextBox1.Text = "": Application.SendKeys "{tab}"
                    대신에
                    Cancel = True
                    TextBox1.Text = ""


                    • 2023-11-20 09:42

                      @원조백수 님 오!! 잘되요! 정말 감사합니다. 진짜 덕분에 해결 되었습니다!! 진철한 답변 정말 감사드립니다:)

                      많이 배워 갑니다:)


전체 13,315
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (235)
오빠두엑셀 | 2022.02.03 | 추천 514 | 조회 259660
오빠두엑셀 2022.02.03 514 259660
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 280 | 조회 17726
오빠두엑셀 2021.10.28 280 17726
64387 VBA
New 아실 크롤링 관련 문의 (1)
임정호 | 2023.11.30 | 추천 0 | 조회 21
임정호 2023.11.30 - 21
64384 VBA
New VBA PivotItem 문의 (1)
봉s | 2023.11.30 | 추천 0 | 조회 18
봉s 2023.11.30 - 18
64382 파워쿼리/피벗
New [파워쿼리] 쿼리안에서 구분기호 기준으로 열분할을 하고 난 후, 아래로 채우기가 안됩니다.!! (2) 답변완료
jja**** | 2023.11.30 | 추천 0 | 조회 25
jja**** 2023.11.30 - 25
64381 함수/공식
New row()가 자동으로 변경될 수 있도록.... 엑셀파일 (3)
대빵 | 2023.11.30 | 추천 0 | 조회 29
대빵 2023.11.30 - 29
64377 피벗테이블
New 엑셀 피벗 행/열 비율 산출 질문 (1)
bugko**** | 2023.11.30 | 추천 0 | 조회 16
bugko**** 2023.11.30 - 16
64376 VBA
New 견적서 내용을 리스트업 하는 VBA 엑셀파일첨부파일
조범주 | 2023.11.30 | 추천 0 | 조회 30
조범주 2023.11.30 - 30
64371 구글시트
New 두 개 시트 연동 (1)
RecSoo | 2023.11.30 | 추천 0 | 조회 25
RecSoo 2023.11.30 - 25
64370 함수/공식
New 모든시트를 선택하는 함수가 있을까요?ㅠㅠ (1)
myyh**** | 2023.11.30 | 추천 0 | 조회 36
myyh**** 2023.11.30 - 36
64367 VBA
New 특정셀에 여러 변수 값을 대입하여 나오는 계산 값을 변수에 맞게 한번에 출력되게 하는 방법이 있을까요?? 엑셀파일첨부파일 (2) 답변완료
박재관 | 2023.11.30 | 추천 0 | 조회 35
박재관 2023.11.30 - 35
64366 문서서식
New 전체인쇄와 시트1개 인쇄시 이미지 품질 저하문제 첨부파일 (2)
코코마 | 2023.11.30 | 추천 0 | 조회 18
코코마 2023.11.30 - 18
64360 함수/공식
New 각 열의 텍스트를 비교하여 일치율에 따라 관련열 값 가져오기 첨부파일 (1)
요코하마박 | 2023.11.30 | 추천 0 | 조회 34
요코하마박 2023.11.30 - 34
64359 구글시트
New 엑셀 또는 구글시트 - 다른시트 데이터의 새로운값만 순차적으로 가져오는방법.. (3)
myyh**** | 2023.11.30 | 추천 0 | 조회 25
myyh**** 2023.11.30 - 25
64355 함수/공식
New sumifs 문의 드립니다. (2) 답변완료
sarangh**** | 2023.11.30 | 추천 0 | 조회 29
sarangh**** 2023.11.30 - 29
64353 함수/공식
New 엑셀 수식이 안 먹어요~ 엑셀파일 (2)
안녕 | 2023.11.30 | 추천 0 | 조회 43
안녕 2023.11.30 - 43
64352 VBA
New 명령단추 클릭시 색상변경 엑셀파일첨부파일 (2)
본아이디 | 2023.11.30 | 추천 0 | 조회 33
본아이디 2023.11.30 - 33
64351 VBA
New Sendkey 초기화 관련 문의 (1)
임정호 | 2023.11.30 | 추천 0 | 조회 24
임정호 2023.11.30 - 24
64350
New 대출금리 자동계산수식 여쭤봅니다 (2)
집중력귀신 | 2023.11.30 | 추천 0 | 조회 22
집중력귀신 2023.11.30 - 22
64340 함수/공식
New 셀 값을 변경하는 수식 사용 중에 작동이 안돼서 문의드립니다. 첨부파일 (4)
슈바츠론 | 2023.11.30 | 추천 0 | 조회 33
슈바츠론 2023.11.30 - 33
64333 함수/공식
New 실시간 데이터 연동 방법 좀 알려주실 수 있나요?? (2)
dfgkdflglkdf | 2023.11.30 | 추천 0 | 조회 45
dfgkdflglkdf 2023.11.30 - 45
64329 함수/공식
New IF와 VLOOKUP을 같이써서 처리를 해야하는 셀인데 어떻게 해야 맞는지 모르겠네요 ㅠㅠ... 첨부파일 (2) 답변완료
fkdn**** | 2023.11.29 | 추천 0 | 조회 60
fkdn**** 2023.11.29 - 60
64327 함수/공식
New 몇주째 도저히 모르겠습니다ㅜㅜ 일별/주간/월별 데이터 불러올 함수 알려주실분 꼭 부탁드립니다. 엑셀파일 (5) 답변완료
shin**** | 2023.11.29 | 추천 0 | 조회 87
shin**** 2023.11.29 - 87
64326 구글시트
New 엑셀이나 구글시트에서 특정 데이터를 입력하면 표시,금지 할수있는 방법을 알수있을까요 ? (3)
다운이남편 | 2023.11.29 | 추천 0 | 조회 41
다운이남편 2023.11.29 - 41
64325 함수/공식
New 엑셀함수관련 문의드립니다 기초적인부분이지만 해결방법이 궁금합니다 첨부파일 (3) 답변완료
gnsdlgns | 2023.11.29 | 추천 0 | 조회 49
gnsdlgns 2023.11.29 - 49
64320 파워쿼리/피벗
New 파워쿼리 엑셀 파일 불러오기 액세스 거부 ㅜㅠ 첨부파일 (1)
방글당근 | 2023.11.29 | 추천 0 | 조회 41
방글당근 2023.11.29 - 41
64317 VBA
New 집계함수를 반영하니 계산시간이 많이 걸립니다 다른방법이 없는지요 엑셀파일 (3)
슈토파이터 | 2023.11.29 | 추천 0 | 조회 63
슈토파이터 2023.11.29 - 63
64316 문서서식
New 조건부서식 하나가 막히는 데 도와주세요 첨부파일 (1)
수캄 | 2023.11.29 | 추천 0 | 조회 50
수캄 2023.11.29 - 50
64312 함수/공식
New 특정 텍스트 추출 엑셀파일첨부파일 (4)
ggplay**** | 2023.11.29 | 추천 0 | 조회 74
ggplay**** 2023.11.29 - 74
64311 함수/공식
New 함수 문의 첨부파일 (1)
비갠오후 | 2023.11.29 | 추천 0 | 조회 53
비갠오후 2023.11.29 - 53
64310 함수/공식
New 기간 중복을 제외하고 주당 사용 일수 계산 문의드립니다. 엑셀파일첨부파일 (2)
함수시르미 | 2023.11.29 | 추천 0 | 조회 30
함수시르미 2023.11.29 - 30
64294 함수/공식
New 표준편차 계산시 특정월의 데이터만 계산하고 싶습니다 엑셀파일첨부파일 (3) 답변완료
전설 | 2023.11.29 | 추천 0 | 조회 39
전설 2023.11.29 - 39