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