Range|Areas|Union|SpecialCells |Range|Areas|Count|Union|SpecialCells|
떨어진 다중의 범위에 접근하기
아래그림과 같은 범위의 접근의 경우가 있을것이다
직접접근하려면 Ctrl키를 잡고 선택해 나간다
근접하지 않는 여러개의 범위를 동시에 접근한것이다
여러 범위를 뚝뚝 떨어져 있는 상태를 하나의 범위로 접근한것이다
Range("A1:B2,C4:D5,B7:C8")
떨어진 3개의 범위에 첫번째범위(A1:B2)에는 3을 입력하고
두번째범위(C4:D5)에는 5를 입력하고
세번째범위(B7:C8)에는 7을 입력하고 싶다면
어떻게 코딩을 하여야 할까??라는 문제가 있다면
어떻게 풀어야 할까??
문제를 풀기 위하여 아래와 같이 Areas라는 속성이 제공된다
Range("A1:B2,C4:D5,B7:C8").Areas(1)=3
Range("A1:B2,C4:D5,B7:C8").Areas(2)=5
Range("A1:B2,C4:D5,B7:C8").Areas(3)=7
이렇게 하나씩 떨어져있는 범위하나를 Area오브젝트라고 한다
하나의 셀단위가 아니고 하나의 범위단위로 접근한다
직접실행창에
?Range("A1:B2,C2:E10,G10").Areas.Count
입력후 엔터키를 치면
3이라는 숫자가 나올것이고 이것은 몇개의 영역(Area)로
구성되었다는것을 알아내는 표현식이다
만약 하나의 영역으로 구성된 범위에서
?Range("A1").Areas.Count의 값은 1이다
하나의 영역으로 구성된 범위인것이다
?range("A1,B2:B20").Areas.Count의 값은 2이고
?range("A1,B2:B20").Count의 값은 20이다
?range("A1,B2:B20").Cells.Count의 표현식에서 Cells가
생략되어도 Cell의 갯수를 알아낸다
Cells는 Range오브젝트의 Default속성이기도 하다
?range("A1,B2:B20").Areas(1).Count는 1이고
?range("A1,B2:B20").Areas(2).Count는 19이다
아래 화일에서는 영역을 순환하면서 영역내의 각각의 셀을
순환하는 작업을 한다
Looping Cells In Each Area
Application오브젝트의 Union메소드를 활용하여 떨어진 다중의 범위에 접근하기
여러개의 다중 범위를 하나의 범위로 접근하게 Range속성으로
위에서 이야기했는데..왠 또..Application오브젝트의 Union메소드
라는 희안한 단어가 나오는가?!@#
그러나 모두 필요해서 만들어진것들이다
Range("A1:B2,C2:E10,G10")
와
Union(Range("A1:B2"),Range("C2:E10"),Range("G10"))
는 결과가 똑같은 범위를 얻어 낸다
둘의 것이 무엇이 틀린가??
범위를 얻어내는 방법이 틀린것이다
왜 방법이 틀려야 할까??
어떤 경우에 그런 경우가 생길까??
소루션을 만들때는 Union메소드로 범위를 얻어 내는 요령도
잘 알고 있어야 한다
예를 들면 데이타테이블에서 휠터를 했을때 발생하는 범위들은
서로 근접하지 않는 여러개의 범위가 발생할때 Union메소드가
편리하게 활용될수 있다
Use Union Method To Get Mult iRanges
특수한 범위에 접근하기
엑셀에 능숙하면 VB를 활용한 엑셀프로그래밍은 당연히 쉬워진다
아래의 그림이 처음보는것 같다면 엑셀 공부를 더 하시는것이 좋을것이다
아무튼 아래의 그림의 기능을 프로그래밍적으로 수행해주는
메소드가 SpecialCells이다
Cells.SpecialCells(xlCellTypeConstants)
는 현재 활성화된 워크시트의 상수가 들어있는 모든 범위에 접근시킨다
상수표는 아래와 같다
XlCellType 상수 | 어떤 셀? | 상수값 |
xlCellTypeAllFormatConditions | 서식된 셀 | -4172 |
xlCellTypeAllValidation | 유효성검사가 설정된 셀 | -4174 |
xlCellTypeBlanks | 수식이나 값이 없는 셀 | 4 |
xlCellTypeComments | 메모가 삽입된 셀 | -4144 |
xlCellTypeConstants | 값이 들어있는 셀 | 2 |
xlCellTypeFormulas | 수식이 들어있는 셀 | -4123 |
xlCellTypeLastCell | 사용된 범위중 맨 끝의 셀 | 11 |
xlCellTypeSameFormatConditions | 똑같은 서식이 된 셀 | -4173 |
xlCellTypeSameValidation | 같은 유효성검사가 설정된 셀 | -4175 |
xlCellTypeVisible | 숨겨지지 않은 셀 | 12 |
SpecialCells메소드는 매개변수를 두개이나 뒤의 것은 Optional이고
수식의 셀을 찾을때 결과값을 구분하여 찾는다
두번째 상수표는 아래와 같다
XlSpecialCellsValue 상수 | 수식의 결과값 | Value |
xlErrors | 오류 | 16 |
xlLogical | 논리값 | 4 |
xlNumbers | 숫자값 | 1 |
xlTextValues | 문자값 | 2 |
SpecialCells메소드는 아주 유용하다
예를 들어서 시트상의 오류가 난 수식을 모두 찾아서
별도의 리스트를 만들어라!!
라고 구문을 작성하면 쏜살같이 만들어 주는것이다
Use SpecialCells Method To Get SpecialCells