[VBA] inputBox 를 통한 제품검색 vlookup 질문입니다.

VBA
작성자
제펠
작성일
2021-05-03 17:51
조회
66

안녕하세요

이제 막 VBA 시작하려고 이것저것 공부해보고 있습니다.

현재 제품검색이라는 단추를 누르고 품목 코드를 입력하면 위치와 현재 재고 수량을 알려주는것을 VBA로 해보려고 하고 있습니다.

 

어찌저찌해서 위치와 현재 수량은 나오는데 잘못입력했을 경우에 코드를 어떻게 입력해야 하는지 모르겠습니다. ㅠㅠ

없는 코드가 입력되었을때 "입력하신 코드가 없습니다" 라고 하고 싶습니다.

현재는 아무렇게나 입력해도 이렇게 뜨네요 ㅠㅠㅠㅠ

 

 

 

 

 

Sub inputBox()
 
    Dim code_name As String
 
    Dim lot As String
 
    Dim qty As Long
 
    qty = Range("A2").End(xlDown).Row
 
    code_name = Application.inputBox("조회할 품목코드를 입력해주세요.")
 
 
    For i = 2 To qty
        If Cells(i, 1).Value = code_name Then
            lot = Cells(i, 4).Value
            qty = Cells(i, 11).Value
        End If
    Next i
 
 
    MsgBox "제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다."
 
End Sub

도움 부탁드립니다 ^^

회원등급 : 가지3단계
포인트 : 739 EP
총질문 : 1 개 (마감율 : 100%)
채택답변 : 16 개
전체 10

  • 2021-05-03 20:50
    For i = 2 To qty
            If Cells(i, 1).Value = code_name Then
                lot = Cells(i, 4).Value
                qty = Cells(i, 11).Value
                MsgBox "제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다."
                Exit For 
            End If
        Next i
     
     
    

    메시지 박스의 위치를 잘못 잡으 셨네요. 위의 코드 보시면 이해 되실 겁니다.


    • 2021-05-04 13:35

      답변 감사합니다.

      알려주신것으로 사용시 재고수량이 931로 뜨는건 해결되었습니다.

      그런데, 목록에 없는 코드를 입력했을 경우에 "품목을 확인해주세요" 라든가 "입력하신 코드가 없습니다" 라고 나오게 하고 싶습니다.

      목록에 없는 코드를 답변 해주신것으로 입력했을때는 그냥 창이 닫히고 아무런 반응이 없네요


      • 2021-05-04 17:58
        '...
        Dim Found as Boolean
        Found = False
        
        For i = 2 To qty
                If Cells(i, 1).Value = code_name Then
                    lot = Cells(i, 4).Value
                    qty = Cells(i, 11).Value
                    MsgBox "제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다."
                    Found = True
                    Exit For 
                End If
         Next i
        
        if Found = False Then 
           If MsgBox("찾는 품목이 없습니다. 계속 하기겠습니까?", vbYesNo) = vbYes Then
              Call InputBox
           Else
              Exit Sub
           End
        
        End If

        이렇게 해보셔요 ㅎㅎㅎ


        • 2021-05-06 11:36

          답변 감사합니다.

          다시 알려주신 코드로 아래와 같이 작성을 했습니다만 문제가 또 있습니다. ㅠ_ㅠ

          Sub inputBox()
          
          Dim code_name As String
          
          Dim lot As String
                  
          Dim qty As Long
              
          qty = Range("A2").End(xlDown).Row 
              
          code_name = Application.inputBox("조회할 품목코드를 입력해주세요.")
              
              
          Dim Found As Boolean
          Found = False
                  
          For i = 2 To qty
              If Cells(i, 1).Value = code_name Then
               lot = Cells(i, 4).Value 
               qty = Cells(i, 11).Value
               MsgBox "제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다."
               Found = ture
               Exit For
              End If
          Next i
              
          If Found = False Then
              If MsgBox("찾는 품목이 없습니다. 계속 하시겠습니까?", vbYesNo) = vbYes Then
              Call inputBox
          Else
              Exit Sub
           End If
              
          End If 
            
          End Sub
            
          

          1. 조회할 품목코드를 입력해주세요 (확인, 취소창) 

          아무 입력없이 확인창 눌렀을때 -> 찾는 품목이 없습니다 (예,아니오 창 뜸)

          아무 입력없이 취소창 눌렀을때 -> 찾는 품목이 없습니다 (예,아니오 창 뜸)

          2. 찾을 품목코드 입력했을때 (제대로 입력했을때)

          품목코드와 위치 수량이 정확하게 나오고 확인창 누르면

          찾는 품목이 없습니다 (예,아니오 창 뜸)

           

          위와 같은 현상이 발생합니다.

          중간에 뭔가 코드를 이리저리 바꿔봤는데 모르겠네요 ㅠㅠ


          • 2021-05-06 12:57
            Sub inputBox()
               Dim code_name As String
               Dim lot As String
               Dim qty As Long
               Dim Found As Boolean
               Dim i As Long
                
               qty = Range("A2").End(xlDown).Row
                
            Start_Again:
            
               code_name = Application.inputBox("조회할 품목코드를 입력해주세요.")
               
               If code_name = vbNullString Then
                  If MsgBox("입력된 코드가 없습니다. 다시 입력 하시겠습니까??", vbYesNo) = vbYes Then
                     GoTo Start_Again
                  Else
                     Exit Sub
                  End If
               End If
                
               Found = False
                    
               For i = 2 To qty
                  If Cells(i, 1).Value = code_name Then
                     lot = Cells(i, 4).Value
                     qty = Cells(i, 11).Value
                     MsgBox "제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다."
                     Found = True
                     Exit For
                   End If
               Next i
                
               If Found = False Then
                  If MsgBox("찾는 품목이 없습니다. 계속 하시겠습니까?", vbYesNo) = vbYes Then GoTo Start_Again
               Else
                  If MsgBox("계속 검색 하시겠습니까?", vbYesNo) = vbYes Then GoTo Start_Again
               End If
            End Sub

            이렇게 한 번 해보시죠. 테스트 해 보았습니다. 잘 됩니다.


            • 2021-05-06 13:44

              답변 감사합니다.

              알려주신 코드로 작성했습니다만 아래 그림과 같은 현상이 발생합니다.

              50100 품목 코드로 조회했습니다. (보유 중인 품목입니다.)

              정상적으로 조회 됩니다.  이 상태에서 확인을 눌렀습니다.

              이렇게 뜨며 처음 품목 코드 조회 창에서 취소를 눌렀을때도 같은 창이 뜹니다.

              정리 드리면

              1. 품목코드 입력창 -> 조회 후 정상적으로 조회 완료 -> 확인 누름  -> 찾을품목이없습니다 계속 하시겠습니까? 창 뜸
              2. 품목코드 입력창 -> 취소 누름 -> 찾을품목이없습니다 계속 하시겠습니까? 창 뜸

              한가지더 확인되었습니다.

            • 품목코드 입력창 -> 조회 후 정상적으로 조회 완료 -> 확인 누름  -> 찾을품목이없습니다 계속 하시겠습니까? 창 뜸 -> 예 -> 정상적인 코드로 조회 -> 찾을품목이없습니다 계속 하시겠습니까? 창 뜸
            • 번거롭게 해드린것 같아 송구하옵니다 (- -)(_ _)


            • 2021-05-06 14:21
              채택된 답변
              Option Explicit
              
              Sub inputBox()
                 Dim code_name As String
                 Dim lot As String
                 Dim qty As Long
                 Dim Found As Boolean
                 Dim i As Long
                  
                 qty = Range("A2").End(xlDown).Row
                  
              Start_Again:
              
                 code_name = Application.inputBox("조회할 품목코드를 입력해주세요.")
                 
                 If code_name = vbNullString Then
                    If MsgBox("입력된 코드가 없습니다. 다시 입력 하시겠습니까??", vbYesNo) = vbYes Then
                       GoTo Start_Again
                    Else
                       Exit Sub
                    End If
                 End If
                  
                 Found = False
                      
                 For i = 2 To qty
                    If Cells(i, 1).Value = code_name Then
                       Found = True
                       
                       lot = Cells(i, 4).Value
                       qty = Cells(i, 11).Value
                       If MsgBox("제품코드 " & code_name & " 의 위치는 " & lot & "  현 재고 수량은 " & qty & "  입니다." & vbNewLine & vbNewLine & _
                                 "계속 검색 하시겠습니까?", vbYesNo) = vbYes Then
                                      GoTo Start_Again
                       Else
                          Exit Sub
                       End If
                     End If
                 Next i
                  
                 If Found = False Then
                    If MsgBox("찾는 품목이 없습니다. 계속 하시겠습니까?", vbYesNo) = vbYes Then GoTo Start_Again
                 End If
              End Sub
              
              '다시 한 번 보시죠. 이번에는 제가 시트에 임의의 코드까지 입력해 놓고 테스트 해 보았습니다.

              • 2021-05-06 15:15

                상시 답변 감사합니다.

                처음 품목코드 조회시 조회하지 않고 취소시

                -> 찾는품목이 없습니다. 계속 하시겠습니까? 이 창이뜹니다.

                 

                그리고, 처음 조회때는 정상적으로 조회가 되나,

                한번 조회한 후 계속 검색하시겠습니까? yes -> 조회시 조회가 안됩니다. 찾는품목이 없다고 나옵니다.

                아예 창을 닫은 후에 처음부터 다시 시작하면 조회가 정상적으로 됩니다.

                1. 최초 처음 품목코드 조회시에만 위치와 수량이 조회가 되며, 연속으로 조회시에는 조회가 안되는 현상입니다.
                2. 처음 품목코드 조회창에서 취소시 "찾을품목이 없습니다 " 가 뜹니다.

                바쁘실텐데 이거 신경쓰느라 일못하시는건 아니신지.. 시간 나실때 천천히 답변해주셔도 됩니다 ^^


              • 2021-05-07 10:49

                처음 조회때는 정상적으로 조회가 되나,

                한번 조회한 후 계속 검색하시겠습니까? yes -> 조회시 조회가 안됩니다. 찾는품목이 없다고 나옵니다.

                아예 창을 닫은 후에 처음부터 다시 시작하면 조회가 정상적으로 됩니다.

                 

                --> Start Again: 위치를 옮겨서 해결했습니다.

                 

                처음 품목코드 조회시 조회하지 않고 취소시

                -> 찾는품목이 없습니다. 계속 하시겠습니까? 이 창이뜹니다.

                --> 이건 좀더 공부해보겠습니다.

                 

                감사합니다.


전체 2,955
번호 카테고리 제목 작성자 작성일 추천 조회
2943 문서서식
New 사용자 지정 정렬 첨부파일
wbyu**** | 20:49 | 추천 0 | 조회 4
wbyu**** 20:49 0 4
2942 함수/공식
New 동적범위 적용 질문
두부 | 18:33 | 추천 0 | 조회 8
두부 18:33 0 8
2941 함수/공식
New 가로방향으로 수집되는 값을 세로방향으로 나열하는 법 첨부파일 (1)
녹차라면 | 14:29 | 추천 0 | 조회 26
녹차라면 14:29 0 26
2940 대시보드
New 간트차트 상 병합된 셀의 필터링 &진척도 표시 관련 첨부파일
asuka | 08:46 | 추천 0 | 조회 21
asuka 08:46 0 21
2939
New 안녕하세요 ~ VBA 카카오톡 관련문의 입니다 (1)
호기윤 | 02:00 | 추천 0 | 조회 25
호기윤 02:00 0 25
2938 함수/공식
New 교차판매 (cross-selling)분석을 위해 어떻게 가공해야하는지 모르겠습니다 ㅠ
동엽 | 2021.05.13 | 추천 0 | 조회 34
동엽 2021.05.13 0 34
2937 함수/공식
New 엑셀 함수질문있습니다. 첨부파일 (1)
BackGom | 2021.05.13 | 추천 1 | 조회 39
BackGom 2021.05.13 1 39
2936 함수/공식
New 전체직원에서 중복되지 않은 값을 다른곳에 추출 ! 도와주세요 ㅠ 첨부파일 (2)
E | 2021.05.13 | 추천 0 | 조회 48
E 2021.05.13 0 48
2935 문서서식
New 데이터 정규화 도와주세요.... 첨부파일
닉뿡뿡 | 2021.05.13 | 추천 1 | 조회 48
닉뿡뿡 2021.05.13 1 48
2934 함수/공식
New 안녕하세요 이 함수식의 해석좀 부탁드려도 될까요 (2) 답변완료
Hynix | 2021.05.13 | 추천 0 | 조회 51
Hynix 2021.05.13 0 51
2933 문서서식
New 셀병합 세로로 병합된 범위 문제 (1)
엑셀고수왕소취 | 2021.05.13 | 추천 0 | 조회 37
엑셀고수왕소취 2021.05.13 0 37
2932 피벗테이블
New 피벗테이블 행 필드 순서변경 질문드립니다. 첨부파일 (1)
월마리아 | 2021.05.12 | 추천 0 | 조회 26
월마리아 2021.05.12 0 26
2931 VBA
New VBA 문제 관련 (VBA를 사용하여 사진 옮기기) 첨부파일 (7) 답변완료
철모대장 | 2021.05.12 | 추천 0 | 조회 57
철모대장 2021.05.12 0 57
2930 VBA
New 이건 VBA로 해결해야 할 것 같습니다. 첨부파일 (3) 답변완료
. | 2021.05.12 | 추천 1 | 조회 75
. 2021.05.12 1 75
2929 VBA
New 행방향 필터 문의드립니다 ( 가로필터) 첨부파일 (2)
김희주 | 2021.05.12 | 추천 0 | 조회 63
김희주 2021.05.12 0 63
2928 문서서식
New 도와주세요! 매크로 말고 서식 설정으로 숫자와 한글 같이 나오게 할 수 있나요? (2)
회계직원 | 2021.05.12 | 추천 0 | 조회 39
회계직원 2021.05.12 0 39
2927 차트/그래프
New 엑셀 간트차트 자동화 양식 (진행상황, 업무흐름 표시) 문의 (2) 답변완료
비엘 | 2021.05.12 | 추천 1 | 조회 67
비엘 2021.05.12 1 67
2926 함수/공식
New 날짜 일수별 사용현황 합계 분석이 가능할까요 (3)
쭈니준이 | 2021.05.12 | 추천 0 | 조회 46
쭈니준이 2021.05.12 0 46
2925 함수/공식
엑셀 수량 집계 함수 질문합니다. (1)
상길 | 2021.05.11 | 추천 1 | 조회 49
상길 2021.05.11 1 49
2924 함수/공식
다량의 데이터에서 특정값을 포함하는 행 추출방법 첨부파일 (1)
고래 | 2021.05.11 | 추천 0 | 조회 63
고래 2021.05.11 0 63
2923 함수/공식
엑셀 A라는 파일에 엑셀 1월, 2월,3월 각 파일을 가지고 A라는 파일에 매달 업데이트 하는 방법 도와주세요! (5)
jyk0077@hanmail.net | 2021.05.11 | 추천 2 | 조회 74
jyk0077@hanmail.net 2021.05.11 2 74
2922 VBA
이게 가능할까요 ? (2)
12394 | 2021.05.11 | 추천 0 | 조회 80
12394 2021.05.11 0 80
2921 VBA
패턴을 찾아 색칠해 주는 방법 문의 첨부파일 (4)
눈사람 | 2021.05.11 | 추천 0 | 조회 51
눈사람 2021.05.11 0 51
2920 파워쿼리/피벗
ximage 함수조정등으로 이미지링크외 기타 웹페이지캡쳐 다운
오재석 Diego | 2021.05.11 | 추천 1 | 조회 57
오재석 Diego 2021.05.11 1 57
2919 함수/공식
엑셀 다중조건을 만족하고 중복값 제거 후 고유값 개수 카운트 공식 문의 첨부파일 (1)
우와토넛 | 2021.05.10 | 추천 0 | 조회 64
우와토넛 2021.05.10 0 64
2918 VBA
자동 셀병합 함수 오류 (1)
꼬구마 | 2021.05.10 | 추천 0 | 조회 38
꼬구마 2021.05.10 0 38
2917 파워쿼리/피벗
엑셀로 카카오톡 대화내용을 읽어들여 올 수 있나요? (2) 답변완료
만법귀일 | 2021.05.10 | 추천 0 | 조회 100
만법귀일 2021.05.10 0 100
2916 함수/공식
추세 출력 공식이 알고 싶습니다. (3) 답변완료
index | 2021.05.10 | 추천 0 | 조회 54
index 2021.05.10 0 54
2915 함수/공식
이미지파일을 엑셀 셀에 불러오는 함수 알려주세요 첨부파일 (1) 답변완료
왕장 | 2021.05.09 | 추천 0 | 조회 66
왕장 2021.05.09 0 66
2914 기능/도구
맥북 엑셀 관련 (1)
naver_5f055a605ee7d | 2021.05.09 | 추천 1 | 조회 38
naver_5f055a605ee7d 2021.05.09 1 38