Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

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