[4주차] VBA 학습노트 및 미션

VBA 4주 완성
작성자
Aidan
작성일
2022-07-25 17:46
조회
1051

1. 열심히 공부한 흔적이 담긴 사진을 남겨주세요!
(위쪽 카메라 버튼을 클릭해서 이미지를 삽입할 수 있습니다)

 

 

2. 이번 스터디에서 새롭게 알게되거나 유익했던 내용을 3가지로 요약해주세요!

 

1) Collection과 Array의 차이점

2) With 문의 활용

3) 사용자정의폼의 활용

 

3. 이번 스터디를 진행하면서 특별히 좋았던 점이나 부족했던 점이 있다면 자유롭게 남겨주세요.

 

엑셀 VBA의 활용법에 대해서 잘 알 수 있었던 강의였었고 추후에 개인적인 복습과 학습이 더 필요하겠지만

사무업무를 하는 데에 있어서 제대로 활용만 한다면 많은 시간을 아낄 수 있을것으로 생각합니다.

 

 

4. 열심히 학습한 결과파일이나 스크린샷, 코드가 있다면 자유롭게 올려주세요.

 

Function MyCountIf(Rng As Range, Criteria As Variant) As Long
'---------------------------------
'■사전미션1
'나만의 CountIF 함수 만들기
'Rng 범위에서 Criteria와 같은 값의 개수를 반환합니다.
'---------------------------------
Dim R As Range
Dim i As Long

For Each R In Rng
If R.Value = Criteria Then
i = i + 1
End If
Next
MyCountIf = i

'힌트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 Double
'---------------------------------
'■사전미션2
'나만의 SumIF 함수 만들기
'Rng 범위의 값이 Criteria와 같을 경우, Sum_Range의 합계를 반환합니다.
'---------------------------------

Dim i As Long
Dim Result As Double

For i = 1 To Rng.Count
If Rng(i).Value = Criteria Then
Result = Result + Sum_Range(i).Value
End If
Next

MySumIf = Result

'힌트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

Sub test()

'Collection 테스트 명령문
'#새로운Collection 만들기
Dim Coll As Collection
Set Coll = New Collection

'#Collection에 값 추가
'collection.add "값"(중복),"Key"(고유)
Coll.Add "사과", "Fruit1"
Coll.Add "배", "Fruit2"
Coll.Add "포도", "Fruit3"

'#Collection 값 지우기
Coll.Remove ("Fruit3")

'#Collection 조회하기
Dim v As Variant
For Each v In Coll
MsgBox v
Next

End Sub

Function UniqueTextJoin(Rng As Range, Optional Delimiter As String = ",")
'------------------------------------
'■ Rng 범위의 고유값으로 이루어진 문자열을 만듭니다.
'■ 예) 사과, 배, 배, 귤, 사과 -> 사과, 배, 귤
'------------------------------------
'① 변수 선언 및 할당하기
'Dim Rng As Range
'Dim Delimiter As String

Dim R As Range 'Rng 를 For Each로 하나씩 참조할 셀
Dim Coll As Collection
Dim v As Variant 'Coll 을 For Each로 하나씩 참조할 값
Dim Result As String '출력 문자열

'Set Rng = DynamicRange(Sheet1, "A", 2)
'Delimiter = ","
Set Coll = New Collection

'② Coll 을 하나씩 돌아가며 고유값만 추가하기
On Error Resume Next
For Each R In Rng
Coll.Add R.Value, R.Value

Next
On Error GoTo 0
'③ 고유값으로 이루어진 문자열 만들기
For Each v In Coll
Result = Result & v & Delimiter
Next

Result = Left(Result, Len(Result) - Len(Delimiter))

'④ 결과값 확인하기
'MsgBox Result
UniqueTextJoin = Result

End Function

Sub AddValidation()
'------------------------------------
'■ Rng 셀에 데이터유효성 목록상자를 추가합니다.
'Range.Validation.Add
'① xlDVType : 데이터유효성검사 형식입니다. xlValidateList
'② AlterStype : 오류메시지 형식입니다. (기본값은 중지(Stop)입니다. 선택인수)
'③ Operator : 연산방식입니다. (목록에서는 사용하지 않습니다. 선택인수)
'④ Formula1 : 데이터 유효성검사로 작성할 수식또는 목록입니다.
'⑤ Formula2 : 연산방식이 포함 또는 포함하지 않음일 경우, 두번째로 작성하는 수식입니다.
'상세설명 링크
'오류메시지 형식 : https://docs.microsoft.com/en-us/office/vba/api/excel.xldvalertstyle
'연산방식 : https://docs.microsoft.com/en-us/office/vba/api/excel.xlformatconditionoperator
'Validation Add 상세 설명 : https://docs.microsoft.com/en-us/office/vba/api/excel.validation.add
'------------------------------------
Dim Rng As Range

Dim UniqueRng As Range
Set Rng = Sheet1.Range("E2")
Set UniqueRng = DynamicRange(Sheet1, "A", 2)

Rng.Validation.Delete
Rng.Validation.Add xlValidateList, , , UniqueTextJoin(UniqueRng)

End Sub

Sub ShowForm()
frmaddproduct.Show

End Sub

 

 

 

신고
스크랩
공유
전체 0

전체 4,140
번호 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
오빠두엑셀 | 2022.02.03 | 추천 575 | 조회 609692
오빠두엑셀 2022.02.03 575 609692
78572
New 엑셀기초4시간 [챕터3]
itskimmin | 2025.05.12 | 추천 0 | 조회 35
itskimmin 2025.05.12 - 35
78552
New 엑셀 기초 4시간 완성, 원데이 챌린지 1일차
엑천괴 | 2025.05.12 | 추천 0 | 조회 21
엑천괴 2025.05.12 - 21
78551
New 챕터1 스터디노트
itskimmin | 2025.05.12 | 추천 0 | 조회 21
itskimmin 2025.05.12 - 21
78539
New 엑셀기초, 4시간 총정리 [Chapter 3] 보고서 퀄리티 UP! 엑셀 자동화 대시보드 만들기
catharine | 2025.05.10 | 추천 0 | 조회 29
catharine 2025.05.10 - 29
78538
New 엑셀기초, 4시간 총정리 [Chapter 2] 엑셀에서 ‘데이터 관리’가 중요한 이유!
catharine | 2025.05.10 | 추천 0 | 조회 22
catharine 2025.05.10 - 22
78537
New 엑셀기초, 4시간 총정리 [Chapter 1] 엑셀 핵심 설정부터 주요 기능까지!
catharine | 2025.05.10 | 추천 0 | 조회 29
catharine 2025.05.10 - 29
78526
New 엑셀기초 4시간완성 1
goo | 2025.05.09 | 추천 0 | 조회 31
goo 2025.05.09 - 31
78476
엑셀 파워쿼리 기초 3 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 55
하이마 2025.05.04 - 55
78475
엑셀 파워쿼리 기초 2 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 70
하이마 2025.05.04 - 70
78474
엑셀 파워쿼리 기초 1 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 47
하이마 2025.05.04 - 47
78468
VBA DAY 1
계란김밥 | 2025.05.03 | 추천 0 | 조회 21
계란김밥 2025.05.03 - 21
78465
엑셀 기초 4시간 총정리 Chapter 3 첨부파일
하이마 | 2025.05.03 | 추천 0 | 조회 32
하이마 2025.05.03 - 32
78457
엑셀 기초 4시간 총정리 Chapter 2
하이마 | 2025.05.02 | 추천 0 | 조회 33
하이마 2025.05.02 - 33
78456
엑셀 기초 4시간 총정리 Chapter 1
하이마 | 2025.05.02 | 추천 0 | 조회 41
하이마 2025.05.02 - 41
78444
파워쿼리 숙제 첨부파일
수평선마음 | 2025.04.30 | 추천 0 | 조회 53
수평선마음 2025.04.30 - 53
78426
VBA 4시간 4일차
김현주 | 2025.04.29 | 추천 0 | 조회 84
김현주 2025.04.29 - 84
78425
VBA 4시간 3일차
김현주 | 2025.04.29 | 추천 0 | 조회 76
김현주 2025.04.29 - 76
78423
VBA 4시간 2일차
김현주 | 2025.04.29 | 추천 0 | 조회 75
김현주 2025.04.29 - 75
78417
VBA 4시간 1일차
김현주 | 2025.04.29 | 추천 0 | 조회 65
김현주 2025.04.29 - 65
78383
엑셀기초 4시간 - 원데이 챌린지(3일차) 첨부파일
doggi**** | 2025.04.27 | 추천 0 | 조회 84
doggi**** 2025.04.27 - 84