오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

재고관리 프로그램 (4편) - 재고 입출고 등록

1. 달력 유저폼 사용법

엑셀 달력 유저폼 사용법_R

다양한 엑셀 자동화 프로그램에 손쉽게 적용할 수 있는 엑셀 달력 유저폼 사용방법에 대해 살펴봅니다.

2. 데이터 정렬 - 기초 원리

데이터 정렬 방식 기초_R

데이터가 정렬에 사용되는 다양한 정렬 방식과 차이점 및 대표적으로 사용되는 2가지 데이터 정렬 방식에 대해 알아봅니다.

3. 이번 강의에서 사용된 주요 보조함수

2차원 배열 정렬 VBA 명령문_R

이번 강의에서는 2차원 배열 정렬에 사용되는 Sort2DArray 함수의 사용법을 알아봅니다.

.
엑셀 VBA 배열 범위 반환 명령문_R

이후 배열을 범위로 출력하는 ArrayToRng 함수의 개선된 점과 실전 사용법을 단계별로 살펴봅니다.

4. 재고 등록 및 조회 명령문 작성 

엑셀 재고정보 조회 유저폼 만들기_R

이번 강의에서는 재고 입출고 정보를 조건에 따라 조회하는 유저폼을 제작하고 각 버튼의 동작을 설정합니다.

.
엑셀 재고 조회 명령문 완성_R

이후 이전 강의에서 알아본 DB관련 함수 및 2차원 배열 정렬함수를 사용하여 재고 입출고 데이터를 조회하는 명령문을 작성합니다.

라이브 정보

회차 29회
방송일 2021년01월02일
카테고리 멤버쉽 라이브 강의
등급 Plus

질문 & 댓글 28

댓글 28
5 (14개 평가)
LSS
LSS 2021.02.07 23:14
잘보고있습니다
dico****
dico**** 2021.10.07 21:12
안녕하세요 4:52:29에서 달력 가져오기 버튼 누르면 run-time error 13
type mismatch가 뜨면서 실행이 안되는데 왜 그럴까요? 진한색으로 표시해 두었습니다.
Sub resetDate()

Dim Y As Integer: Dim m As Integer: Dim d As Integer: Dim w As Integer
Dim i As Integer
Y = left(Me.lblYear.Caption, 4): m = left(Me.lblMonth.Caption, Len(Me.lblMonth.Caption) - 1): d = Day(DateSerial(Y, m + 1, 1) - 1)
w = Weekday(DateSerial(Y, m, 1))
DJ
DJ 2022.03.21 14:10
강의 잘 보고 있습니다. 감사합니다.
xelloss****
xelloss**** 2022.04.24 20:03
안녕하세요. 오빠두엑셀에서 강의를 보며 열심히 엑셀 공부를 하고 있습니다. 이번강의에서 무료로 제공해주신 달력유저폼을 다른 엑셀에도 적용하여 사용해 보려고하는데요.
막상 다른엑셀에 적용해보니...달력을 클릭하였을때 일자가 바로 나타나지 않고...모두 00 00 00 00....이런식으로 나타납니다.
완성본 파일을 실행하여 보니 같은 현상이 나타나네요
왜 이런 오류가 나타나는건지...^^a 해결방법 좀 부탁드리겠습니다.
참고로 제가 사용하는 엑셀버전은 2010이상 입니다.
오빠두엑셀
오빠두엑셀 작성자 2022.04.28 17:16
안녕하세요.
달력 추가기능의 유저폼 명령문 중 "UserForm_Initialize" 코드 중간에
resetYear 아래로
resetDate
를 추가해보시겠어요? 전체 코드를 아래와 같이 수정해보세요.
Private Sub UserForm_Initialize()


Dim i As Long


For i = 1 To 42
    With Me.Controls("Label" & i)
        .BackStyle = 0
    End With
Next


For i = 43 To 84
    With Me.Controls("Label" & i)
        .Caption = ""
        .top = .top - 2
        .left = .left - 2
        .Width = .Width + 3
        .Height = .Height + 2
        .BackStyle = 1
        .Font.Bold = True
    End With
Next


With Me.cboMonth
    For i = 1 To 12: .AddItem i & "월": Next
End With


ReDim vLists(0 To 41)
For i = 0 To 41
    vLists(i) = "Label" & i + 43
Next


resetYear
resetDate


Me.lblYear.Caption = Year(Date) & "년"
Me.lblMonth.Caption = Month(Date) & "월"
Me.scrlMonth.Value = Month(Date)


End Sub
신정섭
신정섭 2022.05.05 11:58
달력유저폼을 다른 엑셀파일에서 사용할려면 어떡하나요?
셀에 선택한 달력날짜가 입력되게 하려면 어떡하면 될까요?
셀과 유저폼 연결이 어렵내요
오빠두엑셀
오빠두엑셀 작성자 2022.05.13 15:32
안녕하세요.
달력 유저폼은 달력 추가기능 파일의 유저폼과 모듈을 사용하실 엑셀파일로 옮겨서 사용하시면 됩니다.
달력 날짜를 얻는 방법은, GetDate 함수를 사용해보시겠어요? :)
jae
jae 2022.05.24 19:17
달력에서 자꾸
type mismatch 에러가 나오네요,,
Me.scrlMonth.Value = left(Me.lblMonth.Caption, Len(Me.lblMonth.Caption) - 1)
이 부분 들어가는 부분들에서 자꾸 에러나오는데 혹시 이유좀 알 수 있을까요?ㅜ
오빠두엑셀
오빠두엑셀 작성자 2022.05.25 15:42
type mismatch 는 데이터 형식이 맞지 않을 경우 발생합니다.
제 예상에는 scrlMonth 로는 left 형식으로 값이 들어갈 수 없어서 그런것이 아닐까 생각됩니다.
Me.scrlMonth.Value = cLng(left(Me.lblMonth.Caption, Len(Me.lblMonth.Caption) - 1))
이렇게 바꿔서 사용해보세요.
jae
jae 2022.05.27 20:30
감사합니다 몇시간 헤메다가 겨우 고치긴 했습니다! 다행히 달력도 이제 잘 작동하네요 ^^
1002
1002 2022.05.26 14:50
유용한 자료네요~ 너무 감사합니다.
jinu****
jinu**** 2023.07.21 17:59
sort2darray 사용시 사용자 지정 목록을 사용하여 정열할 수 있나요?
오빠두엑셀
오빠두엑셀 작성자 2023.07.22 18:47
안녕하세요. Sort2DArray 함수로는 불가능하고
Custom Array(사용자 목록)으로 정렬하기 위한 별도의 코드를 따로 작성해야 합니다.
jinu****
jinu**** 2023.07.24 14:11
넵~~ 감사합니다~~~
레전드21
레전드21 2024.07.02 10:24
이강좌를 듣기위해 멤버쉽 가입을 하게 되었습니다. 쉽게 설명해 주어서 업무에 직접 적용하고 사용하고 있습니다.
다름이 아니라, 명령단추를 이용하여 정해진 셀에 입력하는 방식이 아니라,
달력을 입력해야 하는 셀이 많아 "B4:B100" 범위와 "H4:H100"범위의 셀을 선택했을때 달력폼이 팝업되고, 해당셀에 입력할수 있는 코드로 수정하는 방법을 알고 싶습니다. 감사합니다!
오빠두엑셀
오빠두엑셀 작성자 2024.07.02 17:51
안녕하세요. 오빠두엑셀입니다.
만약 B4:B100 범위 중 하나의 셀을 선택 시, 달력이 팝업되고 날짜를 선택했을 때 B4:B100 범위에 동일한 날짜를 한 번에 입력하려면 시트 모듈에서 WorkSheet_SelectionChange 이벤트를 사용하면 됩니다.
아래와 같이 코드를 작성 후 사용하면 됩니다.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)


If Not Intersect(Target, Range("B4:B100")) Is Nothing Then
    Dim d As Date
    d = frmCalendar.GetDate
    Range("B4:B100").Value = d
End If


End Sub

남겨드린 답변이 문제를 해결하시는데 도움이 되었길 바랍니다. 감사합니다.
레전드21
레전드21 2024.07.03 16:51
대단히 감사합니다. 제가 말씀드린부분중 동일범위에 한꺼번에 입력하는게 아닌 개별 입력을 말씀드렸는데, 알려주신 내용에 쳇GTP이용 약간의 수정작업을 거쳐 제가 원하는 달력을 제가 사용하는 파일에 적용하여 사용할수 있었습니다. 요즘들어 VBA를 이용하여 엑셀공부하는게 넘 재밌네요! 다시 한번 감사합니다. 수고하세요^^
레전드21
레전드21 2024.07.16 14:35
사용을 잘하고 있는데, 한가지 질문드리고 싶습니다.
달력 유저폼이 팝업이 되고, 날짜를 선택하지 않고, 유저폼의 "X"눌러 달력을 종료를 하면, "12:00:00 AM" 입력이 되는데, 날짜를 선택하지않고 종료했을때 빈칸으로 끝내려하는데, 어떻게 수정해야 할까요?
오빠두엑셀
오빠두엑셀 작성자 2024.07.17 06:26
안녕하세요.
GetDate 함수로 12:00:00 AM 대신 빈칸을 출력하시려면, 기존의 GetDate 함수를 아래 함수로 변경해보시길 바랍니다.


Function GetDate(Optional Location As frmLocation = 2, Optional YearGap As Long = 3)

Dim top As Double: Dim left As Double
Dim MousePos As POINTAPI

If Location = 0 Then
  Me.StartUpPosition = 1
ElseIf Location = 1 Then
  Me.StartUpPosition = 0
  Me.top = ActiveCell.top + ActiveCell.Height + Me.Height
  Me.left = ActiveCell.Offset(0, 1).left
Else
  MousePos = convertMouseToForm()
  Me.StartUpPosition = 0
  Me.top = MousePos.Y
  Me.left = MousePos.X
End If

YearBetween = YearGap
resetYear

Me.Show
GetDate = returnDate
If GetDate = 0 Then GetDate = ""
Unload Me

End Function

감사합니다.
레전드21
레전드21 2024.07.17 09:12
원하는대로 너무 잘됩니다^^ 정말 감사합니다!!!

스크립트

자막을 불러오는 중...