[3주차] VBA 스터디 노트

VBA 4주 완성
작성자
호수
작성일
2022-07-19 22:15
조회
549

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

메모와 슬쩍 낙서.

 

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

시트 이벤트 사용 하는 팁 좋아요.

다이나믹 레인지 완전 활용도 쩔꺼 같아요

필터링 하는 것도 정말 유용하게 사용 할 수 있을꺼 같아요

 

 

 

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

-오늘 강의 살짝 어려워서 몇 번을 돌려 봤어요. 자꾸 보니까 좀 더 이해가 되네요.

-근데 시트이벤트가 작동을 안해서 한참 고생을 했는데, 파일을 종료하고 다시 시작하니까 갑자기 잘되요.

머가 원인인지는 모르겠어요

 

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

코드 쭉쭉쭉

'-----------------------------------------
'미션1) 나만의 Sequence 매크로 만들기
'Column로 시작열을 지정하고, Count로 순번 개수를 지정하면
'시작열의 1행부터 순번을 출력하는 매크로를 작성합니다.
'예상풀이시간 : 3분
'-----------------------------------------
Sub SequenceNumber()
 
Dim Column As String   '시작열 @ 예) "A", "B", "C", ...
Dim Count As Long       '출력할 순번 개수 @ 예) 5, 10,15 ...
Dim i As Long                ' For문 변수
 
Column = "c"
Count = 10
 
 
For i = 1 To Count
    Range(Column & i).Value = i
 
Next
 
 
End Sub
 
'-----------------------------------------
'미션2) 나만의 Sequence 매크로를 동적으로 만들기
'InitCell로 시작셀을 지정하고, Count로 출력할 순번 개수를 지정하면
'InitCell을 기준으로 한칸씩 내려가며 순번을 출력하는 매크로를 작성합니다.
'예상풀이시간 : 5분
'-----------------------------------------
Sub DynamicSequence()
 
Dim InitCell As Range       '시작셀 @ 예) Range("A1")
Dim Count As Long          '출력할 순번 개수 @ 예) 5, 10 15 ..
Dim i As Long                   'For문 변수
 
Set InitCell = Range("C5")
Count = 10
 
 
 
For i = 1 To Count
    InitCell.Offset(i - 1).Value = i '한칸씩 내려줌
Next
 
 
End Sub
 
'-----------------------------------------
'미션3) 나만의 TextJoin 함수 만들기
'문자를 병합할 범위를 Rng로 입력하고, 구분자를 지정하면
'Rng의 각 셀을 돌아가며 구분자로 병합하는 함수를 작성합니다.
'예상풀이시간 : 7분
'-----------------------------------------
Function MyTextJoin(Rng As Range, _
                                Optional Delimiter As String = ",")
 
'optional은 선택 옵션 함수의 마지막에만 입력 가능
 
'@ 인수 설명
'Rng : 값을 병합할 범위입니다.
'Delimiter : [선택인수] 구분자입니다. 기본값은 쉼표(,)입니다.
 
Dim r As Range              'For Each문 변수
Dim Result As String      '결과로 출력할 문자열
 
For Each r In Rng
    If r.Value <> "" Then
        Result = Result & r.Value & Delimiter '구분자는 쉼표
    End If
 
Next
'마지막에 구분자가 불필요하게 붙어 있어서 지워 주는데 마지막 한글자만 빼구고
 
MyTextJoin = Left(Result, Len(Result) - 1)
 
 
 
'힌트4) MyTextJoin = Left(○○○, Len(○○○) - 1)
 
 
End Function
 
Function DynamicRange(WS As Worksheet, Column As String, InitRow As Long) As Range
 
'셀을 선택하는데 아주 유용해요.
 
'Dim WS As Worksheet
'Dim Column As String
Dim i As Long
Dim Address As String
'Dim InitRow As Long
 
 
'Set WS = Sheet1
'Set WS = ThisWorkbook.Worksheets("품목검색")
'위에서 내려오는 방법은 멈춰, 그래서 마지막에서 올라오는게 더 유용해요
'Column = "C"
i = WS.Range(Column & "1048576").End(xlUp).Row
'InitRow = 2
If i < InitRow Then i = InitRow
Address = Column & InitRow & ":" & Column & i
 
 
Set DynamicRange = WS.Range(Address)
 
 
End Function
 
Sub Test()
MsgBox DynamicRange(Sheet1, "B", 2).Address
 
End Sub
 
 
Sub FilterItems()
 
'GroupRng(구분)의 조건을 비교해서, 구분에 해당하는 제품과 가격을 표시
 
Dim GroupRng As Range           ' 필터링 할 구분 범위 (동적으로 설정!)
Dim r As Range                  ' GroupRng를 For Each로 하나씩 참조할 셀
Dim FilterVal As String         ' 비교할 조건
Dim i As Long                   ' r의 값이 조건과 같을 경우, 1씩 증가할 정수
 
Set GroupRng = DynamicRange(Sheet1, "A", 2)
FilterVal = Sheet1.Range("E2").Value
 
 
i = 2
For Each r In GroupRng
    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
 
 
End Sub
 
 
 
Sub ClearRange()
 
 
Dim i As Long
 
i = Sheet1.Range("G1048576").End(xlUp).Row
 
If i > 1 Then
    Sheet1.Range("G2:H" & i).ClearContents
 
'DynamicRange(Sheet1, "G", 2).ClearContents
'DynamicRange(Sheet1, "H", 2).ClearContents
 
End If
 
 
 
 
 
End Sub

 

 

 

신고
스크랩
공유
전체 0

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