autofilter (2)
엑셀 VBA #33 / 자동필터_2 [VBA]
반응형

엑셀 VBA #33 / 자동필터_2 [VBA]

앞선 강좌(엑셀 VBA #32 / 자동필터_1 [VBA])의 예제 코드를 실무 사용시 문제점
문제점1.  새로운 조건을 필터시(그 결과개수2개) 이전에 자동필터된 자료(결과개수6개)가 A20셀 아래에 그대로 남아 있어 문제 소지가 있음
문제점2.  아티스트명이 rng영역에 없는 경우, 사용자가 프로그램 오류인지 조건설정 잘못인지 신속 파악힘듬  


새로운 코드
Dim sh1 As Worksheet
Dim rng As Range

Set sh1 = Sheets("자동필터")
Set rng = Range("A1").CurrentRegion

If sh1.AutoFilterMode = False Then rng.AutoFilter
If sh1.FilterMode = True Then sh1.ShowAllData

rng.AutoFilter 2, Range("E2")
Range("A20").CurrentRegion.Clear                                  '문제점1 해결코드
If rng.SpecialCells(xlCellTypeVisible).Count = 3 Then      '문제점2 해결코드
    MsgBox "해당되는 조건의 데이타가 없음"
    Exit Sub
End If

rng.SpecialCells(xlCellTypeVisible).Copy Range("A20")

https://www.youtube.com/watch?v=E0jcmptYAdQ&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=33

반응형
  Comments,     Trackbacks
엑셀 VBA #32 / 자동필터_1 [VBA]
반응형

엑셀 VBA #32 / 자동필터_1 [VBA]


Dim sh1 As Worksheet, rng As Range

Set sh1 = Sheets("자동필터")
Set rng = Range("A1").CurrentRegion

If sh1.AutoFilterMode = False Then rng.AutoFilter
    '만약 sh1 시트에 자동필터모드가 아니라면(false), rng영역에 자동필터해라
If sh1.FilterMode = True Then sh1.ShowAllData
    '만약 sh1시트에 필터링 되었다면(즉 필터링 데이타가 보여진다면), sh1시트의 모든 데이타를 보이게 해라.
    '구문 'FilterMode=True'에서 True는 생략 가능함. 즉 If sh1.FilterMode then sh1.ShowAllData로 해도 됨

rng.AutoFilter 2, Range("E2")
    'rng영역에 자동필터해라, 자동필터 기준은 rng영역의 2번째이며 조건은 E2셀이다.
rng.SpecialCells(xlCellTypeVisible).Copy Range("A20")
    'rng영역에서 보여지는 셀들(Visible SpecialCells) A20셀에 복사해라

결과값
vba#32.xlsm
0.02MB

 

 

 


https://www.youtube.com/watch?v=GqDstYjUv00&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=32

 

엑셀 VBA #09 / 셀 범위 선택하기_4 [VBA] - SpecialCells

 

 

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL