Live Replay
멤버쉽 라이브 강의
엑셀 VBA 4주 완성 특별 스터디 4강 | 스터디 완결! 나만의 엑셀 프로그램 만들기
|
2022년07월23일
강의 소개
1. Collection 개체 기초 & 실전 활용법
이번 강의에서는 실무에서 고급 매크로 명령문을 작성하려면 반드시 알아야 할 Collection 개체의 기본 동작원리를 알아봅니다.
이후 다양한 Collection 개체에 값을 추가하고 삭제하거나 돌아가며 값을 확인하는 방법을 실전 예제와 함께 알아봅니다.
2. 의도적인 오류 사용 & 고유값 목록 만들기
이후 On Error 구문을 적절히 활용하여 의도적으로 오류를 띄우고 원하는 결과를 얻는 방법에 대해 알아봅니다.
이후 선택한 범위의 고유값 목록을 만드는 UniqueTextJoin 함수를 작성합니다.
3. 목록상자 자동화 & 유저폼 만들기 기초
이전 강의에서 알아본 다양한 기능을 종합하여 셀을 선택하면 범위의 고유값으로 목록상자를 만드는 방법을 알아봅니다.
마지막으로 사용자 정의폼을 추가하여 제품을 편리하게 등록하는 엑셀 프로그램을 완성합니다.
라이브 미션
미션 완성 코드는 영상 댓글의 완성파일을 확인하세요!
- [미션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
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
sub or function not defined
오류는 함수가 정의되지 않았을 때 발생하는 오류입니다.
clearrange 함수가 다른 모듈에 잘 작성되어 있는지 한번 확인해보시겠어요?^^
감사합니다.
사용하고 계신 통합문서의 유저폼이름이
"frmAddProduct" 으로 올바른지 한번 확인해보시겠어요?