[259회 라이브 공지] 이번 주(3/14) 토요일 라이브는 휴강입니다. 즐거운 주말 연휴 보내세요! 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
Lecture Live 엑셀 VBA 4주 완성 특별 스터...
Live Replay 멤버쉽 라이브 강의

엑셀 VBA 4주 완성 특별 스터디 4강 | 스터디 완결! 나만의 엑셀 프로그램 만들기

오빠두엑셀
오빠두엑셀 Microsoft MVP · Excel Expert
| 2022년07월23일

강의 소개

1. Collection 개체 기초 & 실전 활용법

collection 배열 차이점_R

이번 강의에서는 실무에서 고급 매크로 명령문을 작성하려면 반드시 알아야 할 Collection 개체의 기본 동작원리를 알아봅니다.

.
엑셀 vba collection 실전 사용법_R

이후 다양한 Collection 개체에 값을 추가하고 삭제하거나 돌아가며 값을 확인하는 방법을 실전 예제와 함께 알아봅니다.

2. 의도적인 오류 사용 & 고유값 목록 만들기

vba 의도적 오류 활용 처리 방법_R

이후 On Error 구문을 적절히 활용하여 의도적으로 오류를 띄우고 원하는 결과를 얻는 방법에 대해 알아봅니다.

.
범위 고유값만 추출하는 매크로_R

이후 선택한 범위의 고유값 목록을 만드는 UniqueTextJoin 함수를 작성합니다.

3. 목록상자 자동화 & 유저폼 만들기 기초

엑셀 목록상자 자동화 매크로_R

이전 강의에서 알아본 다양한 기능을 종합하여 셀을 선택하면 범위의 고유값으로 목록상자를 만드는 방법을 알아봅니다.

.
엑셀 제품 등록 유저폼 만들기_R

마지막으로 사용자 정의폼을 추가하여 제품을 편리하게 등록하는 엑셀 프로그램을 완성합니다.

라이브 미션

미션 완성 코드는 영상 댓글의 완성파일을 확인하세요!

  • [미션1] 고유값을 자동으로 등록하는 목록상자 만들기
  • [미션2] 나만의 제품등록 유저폼 만들기

보충 자료

① CountIf / SumIf 함수 만들기 사전 미션코드

Function MyCountIf(Rng As Range, Criteria As Variant) As Long
'---------------------------------
'■사전미션1
'나만의 CountIF 함수 만들기
'Rng 범위에서 Criteria와 같은 값의 개수를 반환합니다.
'---------------------------------
Dim R As Range
Dim i As Long
 
'힌트1) Rng의 셀을 하나씩 돌아가며..
'For Each R In Rng
 
    '힌트2) R의 값이 Criteria와 같을 경우, i에서 1을 더합니다.
    'If R.Value = Criteria Then..
 
'힌트3) MyCountIf 함수의 결과값으로 i를 반환합니다.
'MyCountIf = i
 
End Function
 
Function MySumIf(Rng As Range, Criteria As Variant, Sum_Range As Range) As Long
'---------------------------------
'■사전미션2
'나만의 SumIF 함수 만들기
'Rng 범위의 값이 Criteria와 같을 경우, Sum_Range의 합계를 반환합니다.
'---------------------------------
 
Dim i As Long
Dim Result As Long
 
'힌트1) Rng.Count 속성을 사용하면 조건범위의 개수를 확인할 수 있습니다.
'힌트2) i = 1 부터 Rng.Count 까지 돌아가며..
 
    '힌트3) Rng(i)을 사용하면 범위에서 i번째 위치한 값을 반환합니다.
    '힌트4) Rng에서 i번째 위치한 값이 Criteria와 동일할 경우..
    'If Rng(i) = Criteria Then..
 
 
        '힌트5) 기존 Result 에 Sum_Range(i) 번째 값을 더합니다.
        'Result = Result + Sum_range(i)
 
 
'힌트3) MySumIF 함수의 결과값으로 Result를 반환합니다.
'MySumIf = Result
 
End Function

② 시트 이벤트 매크로 마스터 코드

Application.ScreenUpdating = False
Application.EnableEvents = False
 
If Not Intersect(Target, Range("셀주소")) Is Nothing Then
    '실행할 명령문
End If
 
Application.ScreenUpdating = True
Application.EnableEvents = True

무료 편집 강의

댓글 6
5 (4개 평가)
SUJIN2
SUJIN2 2022.08.29 19:21
오빠두님! 아래와 같이 코딩을 했는데 clearrange에 하이라이트 되면서 컴파일 에러가 떠요 ㅠsub or function not defined 라고 자꾸 뜨는데 뭐가 문제일까요

Private Sub Worksheet_Change(ByVal Target As range)

Application.ScreenUpdating = False
Application.EnableEvents = False

If Not Intersect(Target, range("e2")) Is Nothing Then
  clearrange
  filtertems
End If


Application.ScreenUpdating = True
Application.EnableEvents = True


End Sub
thisworkbook안에 밑에 함수들을 적었습니다

Sub clearrange()
i=Sheet1.range("g1048576").End(xlUp).Row

If i > 1 Then
Sheet1.range("g2:h" & i).ClearContents
End If

End Sub

Sub filteritems()

Dim grouprange As range
Dim r As range
Dim filterval As String
Dim i As Long

i = 2

Set grouprange = dynamicrange(Sheet1, "a", 2)
filterval = Sheet1.range("e2").Value
For Each r In grouprange
If r.Value = filterval Then
Sheet1.range("g" & i).Value = r.Offset(0, 1).Value
Sheet1.range("h" & i).Value = r.Offset(0, 2).Value

i = i + 1
End If
Next
오빠두엑셀
오빠두엑셀 작성자 2022.09.06 04:07
안녕하세요.
sub or function not defined
오류는 함수가 정의되지 않았을 때 발생하는 오류입니다.
clearrange 함수가 다른 모듈에 잘 작성되어 있는지 한번 확인해보시겠어요?^^
감사합니다.
bul****
bul**** 2022.09.08 12:02
잘봤습니다. 감사합니다.
어수민
어수민 2023.01.30 16:04
frmAddProduct.Show 오류 메세지뜨는데 왜그런가요
오빠두엑셀
오빠두엑셀 작성자 2023.02.01 15:22
안녕하세요.
사용하고 계신 통합문서의 유저폼이름이
"frmAddProduct" 으로 올바른지 한번 확인해보시겠어요?
강민준🤗
강민준🤗 2024.08.12 09:49
좋은 강의 정말 감사합니다🙇‍♂️
PREMIUM 멤버십
모든 강의를 무제한으로
시청하세요
500개+ 실무 강의 · 실습 파일 다운로드 · 질문 우선 답변
멤버십 가입하기 →