VBA를 이용한 재고 활용보고 질문드립니다.

VBA
작성자
황수형(Gallent)
작성일
2021-08-02 00:14
조회
1938
엑셀버전 : 엑셀2010 이전

운영체제 : 윈도우11

안녕하세요.

유튜브에서 8시간 강의인 '엑셀 VBA 완전 정복 - 8시간 풀영상 ㅣ 실무에서 필요한 핵심기능 총 정리 ㅣ 엑셀 재고관리 툴 만들기'를 보며 따라한 뒤 어느정도 익혀진 것 같아 회사 재고를 예제로 만들어 스스로 만들어가던 도중 오류가 발생해서 이렇게 질문드립니다.

 

등록을 코딩하여 F5키를 눌러 작동여부를 활용하는데 13 런타임 오류가 발생했다는 버그가 나오는데,

아무리 영상을 찾아봐도 어떤게 잘못된건지 잘 모르겠더라고요...

혼자 해결하려고 사이트와 영상, 코드를 전부 확인해보았습니다만 미숙한 실력으로 도무지 확인할 방법이 없네요.

답변 꼭 부탁드리겠습니다.

 

감사합니다.

Sub Registercustomer() Dim DB As Variant Insert_Record itmlist, Me.txtType.Value, Me.txtLnumber.Value, Me.txtLocation.Value, Me.txtDlocation.Value, _ Me.txtName.Value, Me.txtModel.Value, Me.txtCategory.Value, Me.txtSize.Value, Me.txtAmount.Value, Me.txtMemo.Value DB = Get_DB(itmlist) Update_List Me.lstMain, DB, "0pt;50pt;70pt;50pt;100pt;200pt;0pt;100pt;100pt;60pt;50pt;" End Sub Function Get_MaxID(WS As Worksheet) As Long With WS Get_MaxID = .Cells(1, .Columns.Count).End(xlToLeft).Value .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1 End With End Function

 

신고
스크랩
공유
전체 7

  • 2021-08-02 02:42

    @황수형(Gallent) 님 1. 어떠한 상황에서 2. 무슨 코드를 실행하면 3. 어느 부분에서 오류가 발생하는지 같이 적어주셔야 될 것 같습니다~^^


    • 2021-08-02 13:31

      @더블유에이

      1. 폼에서 등록버튼에 하단의 코드(DB가 들어있는 시트를 가져온 후 등록할 내용을 작성하고 난 뒤 등록 버튼을 누르면 시트에 입력되는 코드)를 입력했습니다.
      Sub Registercustomer()
       
      Dim DB As Variant
       
      Insert_Record itmlist, Me.txtType.Value, Me.txtLnumber.Value, Me.txtLocation.Value, Me.txtDlocation.Value, _
      Me.txtName.Value, Me.txtModel.Value, Me.txtCategory.Value, Me.txtSize.Value, Me.txtAmount.Value, Me.txtMemo.Value
       
      DB = Get_DB(itmlist)
       
      Update_List Me.lstMain, DB, "0pt;50pt;70pt;50pt;100pt;200pt;0pt;100pt;100pt;60pt;50pt;"
       
       
      End Sub

      그리고 모듈에는 오빠두엑셀님께서 제공한 코드를 입력하였습니다. 하단은 모듈에 들어있는 코드입니다.

      '########################
      ' 특정 워크시트에서 앞으로 추가해야 할 최대 ID번호 리턴 (시트 DB 우측 첫번째 머릿글)
      ' i = Get_MaxID(Sheet1)
      '########################
      Function Get_MaxID(WS As Worksheet) As Long
      With WS
          Get_MaxID = .Cells(1, .Columns.Count).End(xlToLeft).Value
          .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1
      End With
      End Function

      그 뒤 F5키를 이용하여 폼 창을 띄운뒤 빈 칸에 내용을 입력한 후 등록버튼을 누르면 '13 런타임 오류가 발생하였습니다. 형식이 일치하지 않습니다.'라는 문구가 뜨고 디버그를 클릭하게 되면 하단의 코드 중 일부 내용에서 노란색 오류 문단이 보입니다.

      '########################
      ' 특정 워크시트에서 앞으로 추가해야 할 최대 ID번호 리턴 (시트 DB 우측 첫번째 머릿글)
      ' i = Get_MaxID(Sheet1)
      '########################
      Function Get_MaxID(WS As Worksheet) As Long
      With WS
      <span style="background-color: #ffff00;">    Get_MaxID = .Cells(1, .Columns.Count).End(xlToLeft).Value</span>
          .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1
      End With
      End Function

      상기 내용과 관련된 유튜브는 다음과 같습니다. (1:04:58)

      더불어 실전연습하던 파일을 다시 한 번 업로드하오니 꼭 좀 참고 부탁드리겠습니다.

      어떤 문제로 오류가 발생하는지 꼭 좀 알고 싶습니다. ㅠㅠ

      첨부파일 : 실전연습.xlsm


      • 2021-08-02 14:55
        채택된 답변

        @황수형(Gallent) 님 Get_MaxID는 Long으로써 숫자를 받는 코드입니다.

        재고관리 영상을 초반에 보면 제품 ID, 고객 ID등등의 ID를 참조하여 각각의 ID에 맞는 제품을 찾아야한다 라고 설명을 해주십니다.

        즉 Get_MaxID는 작업을 할 시트의 ID값의 최대 값을 불러오는 입니다.

        그리고 재고관리 파일의 거래처시트의 첫 행 F열을 보시면 ID값이 적혀있는데 지금 주신 파일에는 (건들지마시오)라는 Text가 있습니다.

        그러므로 Get_MaxID는 Long으로써 숫자를 받아야하지만 (건들지마시오)라는 텍스트가 있기 때문에 값을 정확하게 불러오지못하는것입니다.


        • 2021-08-02 15:12

          @iviolin**** 님 답변 너무 감사드립니다!

           

          다만 그러면 [건들지마시오]를 삭제하면 해결되는걸까요?


          • 2021-08-03 19:28

            @황수형(Gallent) 님 간단하게 생각하면

            '########################
            ' 시트에 새로운 레코드 추가 (반드시 첫번째 값은 ID, 나머지 값 순서대로 입력)
            ' Insert_Record Sheet1, ID, 필드1, 필드2, 필드3, ..
            '########################
            Sub Insert_Record(WS As Worksheet, ParamArray vaParamArr() As Variant)
             
            Dim cID As Long
            Dim cRow As Long
            Dim vaArr As Variant: Dim i As Long: i = 2
             
            With WS
                cRow = Get_InsertRow(WS)
                If InStr(1, .Cells(1, 1).Value, "ID") > 0 Then
                    cID = Get_MaxID(WS)
                    .Cells(cRow, 1).Value = cID
                    For Each vaArr In vaParamArr
                        .Cells(cRow, i).Value = vaArr
                        i = i + 1
                    Next
                Else
                    For Each vaArr In vaParamArr
                        .Cells(cRow, i - 1).Value = vaArr
                        i = i + 1
                    Next
                End If
             
            End With
             
            End Sub

            에서

            If InStr(1, .Cells(1, 1).Value, "ID") > 0 Then

            cID = Get_MaxID(WS)

            .Cells(cRow, 1).Value = cID

            만 지우시면 작동은 됩니다. 다만

            등록 버튼을 누르실때 ID를 자동적으로 증가시키는 것을 없에고, ID열이 없으므로 다른 사용자 지정 함수 Connect_DB 등과 같은 함수를 쓸때와 파일안의 다른 함수,메크로를 쓰실때 전부 조금씩은 손봐줘야 할 겁니다.

            여기서 설명을 해드리기엔 코딩이란 셀 하나의 이동만으로도 연쇄작용으로 여러개 바꿔야 하기때문에 답변을 제대로 못해드립니다.


          • 2021-10-02 01:21

            @황수형(Gallent) 님 저도 같은 문제로 고민했는데 [건들지마시오] 텍스트를 삭제하고, 시트 마지막 행에 입력된 ID 숫자에 1을 추가해 삭제된 셀에 넣으니 정상 작동하네요. ^^


            • 2024-01-20 01:50

              @서정달 님 감사합니다! 덕분에 해결했어요! ლ(╹◡╹ლ)


전체 18,479
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (313)
오빠두엑셀 | 2022.02.03 | 추천 573 | 조회 601510
오빠두엑셀 2022.02.03 573 601510
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 310 | 조회 35014
오빠두엑셀 2021.10.28 310 35014
78443 함수/공식
New 조건 맞는 값 찾기 엑셀파일첨부파일 (4)
박상선 | 22:21 | 추천 0 | 조회 14
박상선 22:21 - 14
78440 문서서식
New 셀 사용자지정서식 10.0억 표시 방법 (1) 답변완료
은철이 | 18:45 | 추천 0 | 조회 39
은철이 18:45 - 39
78436 기능/도구
New 파워포인트 내 엑셀시트의 리본메뉴 활성화방법은? (1)
기분좋은하루 | 15:27 | 추천 0 | 조회 47
기분좋은하루 15:27 - 47
78431 VBA
New IF 조건문 기초 질문 드립니다. 첨부파일 (5) 답변완료
neoburi | 00:46 | 추천 0 | 조회 104
neoburi 00:46 - 104
78428 기능/도구
New 보이는 범위의 셀로만 붙여넣기하는 법 첨부파일 (2)
유도연 | 2025.04.29 | 추천 0 | 조회 107
유도연 2025.04.29 - 107
78424 함수/공식
New 생년월일 6자리로 나이 계산 어떻게 하나요? (8)
망나 | 2025.04.29 | 추천 0 | 조회 115
망나 2025.04.29 - 115
78421 함수/공식
New INDEX + MATCH 함수 문의 (2)
박상선 | 2025.04.29 | 추천 0 | 조회 110
박상선 2025.04.29 - 110
78420 함수/공식
New 여러시트 중에 같은내용을 찾기 엑셀파일첨부파일 (1)
박석철 | 2025.04.29 | 추천 0 | 조회 84
박석철 2025.04.29 - 84
78419 문서서식
New 크기가 다른 셀에서의 필터 걸기 부탁드립니다 ! 첨부파일 (3) 답변완료
Aberdeen | 2025.04.29 | 추천 0 | 조회 74
Aberdeen 2025.04.29 - 74
78418 함수/공식
New [퀴즈] 텍스트 압축/변형하기 엑셀파일첨부파일 (12) 답변완료
마법의손 | 2025.04.29 | 추천 0 | 조회 158
마법의손 2025.04.29 - 158
78416 VBA
New 시트보호된 상태에서 매크로 작동시 Range 클래스 중 Insert 메서드에 오류가 있습니다. 첨부파일 (1)
jihye**** | 2025.04.29 | 추천 0 | 조회 60
jihye**** 2025.04.29 - 60
78414 파워쿼리/피벗
New 다른 엑셀 파일에서 필요한 값만 불러오는 방법 첨부파일
망그러진나나 | 2025.04.29 | 추천 0 | 조회 70
망그러진나나 2025.04.29 - 70
78413 함수/공식
New 경과주 구하는 수식 문의 (1)
엑셀렙업용 | 2025.04.29 | 추천 0 | 조회 69
엑셀렙업용 2025.04.29 - 69
78411 문서서식
New 숫자 문자인식 숫자변환하는 법 엑셀파일 (5)
패션피플 | 2025.04.29 | 추천 0 | 조회 81
패션피플 2025.04.29 - 81
78410 VBA
New [매크로관련] 특정셀 자동증가하며, 연속출력할수 있을까요? 엑셀파일 (5) 답변완료
박병호 | 2025.04.29 | 추천 0 | 조회 95
박병호 2025.04.29 - 95
78408 문서서식
New 숫자 서식 변경하기 첨부파일 (3) 답변완료
에그셀 | 2025.04.29 | 추천 0 | 조회 71
에그셀 2025.04.29 - 71
78407 기능/도구
New 원드라이브 MICROSOFT 365 사용중 공동작업시 필터 첨부파일 (1)
록키발보아 | 2025.04.29 | 추천 0 | 조회 61
록키발보아 2025.04.29 - 61
78402 함수/공식
New 괄호안의 시간:분 데이터를 분으로 합산하는 방법 질문드립니다. 엑셀파일첨부파일 (1) 답변완료
nams | 2025.04.28 | 추천 0 | 조회 74
nams 2025.04.28 - 74
78400 함수/공식
New 2차배열에서 countif 첨부파일 (9) 답변완료
라면이가좋아 | 2025.04.28 | 추천 0 | 조회 99
라면이가좋아 2025.04.28 - 99
78399 함수/공식
New 한달의 마지막주 스케쥴 작성시 전주까지의 휴무 누적 합계 구하는 방법이 궁금합니다. 엑셀파일첨부파일 (3)
쭈누 바라기 | 2025.04.28 | 추천 0 | 조회 60
쭈누 바라기 2025.04.28 - 60
78398 VBA
New VBA 매크로 여러 엑셀 파일에서 사용 (1)
shhhha | 2025.04.28 | 추천 0 | 조회 89
shhhha 2025.04.28 - 89
78396 함수/공식
New 직원별로 근태 합계를 확인하고 싶어요 엑셀파일 (12) 답변완료
배진희 | 2025.04.28 | 추천 0 | 조회 122
배진희 2025.04.28 - 122
78395 함수/공식
New 특정 단어를 포함한 행 골라내는 방법에 대해 문의드립니다. (3) 답변완료
mmm1010 | 2025.04.28 | 추천 0 | 조회 82
mmm1010 2025.04.28 - 82
78392 함수/공식
New 도와주세요... ( 특정값에 해당하는 반 번호 찾아 목록만들기) 엑셀파일첨부파일 (6)
김동생 | 2025.04.28 | 추천 0 | 조회 89
김동생 2025.04.28 - 89
78389 기능/도구
New 오빠두LIVE 196회 - 엑셀 프로젝트 관리 _ 일,주 바꾸는법 엑셀파일 (1)
일류 | 2025.04.28 | 추천 0 | 조회 77
일류 2025.04.28 - 77
78387 함수/공식
New 엑셀 관련 질문입니다. SUM과 IFERROR 입니다 ㅠ (6)
| 2025.04.27 | 추천 0 | 조회 122
2025.04.27 - 122
78382
New Excel 추세선 이상 엑셀파일 (2)
eagle | 2025.04.27 | 추천 0 | 조회 91
eagle 2025.04.27 - 91
78381 함수/공식
New 같은 이름 N 번째 데이터 엑셀파일첨부파일 (14) 답변완료
박정호 | 2025.04.27 | 추천 1 | 조회 128
박정호 2025.04.27 1 128
78380 함수/공식
New On Error Resume Next 문구를 삽입하는 위치는? (2) 답변완료
GEEM | 2025.04.27 | 추천 0 | 조회 97
GEEM 2025.04.27 - 97
78376 함수/공식
New 지역별 증감금액 확인 엑셀파일 (3) 답변완료
충무공 | 2025.04.26 | 추천 0 | 조회 90
충무공 2025.04.26 - 90