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

Range|CurrentRegion|UsedRange|End|CurrentRegion|UsedRange|Select|Selection|Activate|End|

현재 셀이 위치한 테이블의 범위에 접근하기

엑셀시트의 어떤 테이블의 아무셀이나 선택후
Ctrl+*키를 누르면 테이블전체가 선택될것이다
이것을 프로그래믹하게 표현하면
Range("A1").CurrentRegion.Select가 된다

range("A1").CurrentRegion.Select
range("B5").CurrentRegion.Select
range("D7").CurrentRegion.Select
range("D7").CurrentRegion.Select
range("D7:D8").CurrentRegion.Select


위의 선택된 상태를 보면서 약간 헷갈릴것이다
range("D7").CurrentRegion.Select와 range("D7:D8").CurrentRegion.Select는
아무것도 선택되지 않았다 D7셀 하나만 선택되었다..
선택된 셀이 아니고 활성화된 셀을 기준으로 대각선,상하좌우에
근접하는 셀이 없으면 활성화된 하나의 셀에만 접근하는것이다
아래의 그림과 같이 선택된 상태에서


위의 그림은 range("D7:E11").Select된 상태이다
위의 상태에서 Selection.CurrentRegion.Select로 명령하면
Range("D7")하나만 선택되는것이다
이유는 여러범위가 선택되었지만 활성화된 셀은 하나의 셀
D7이고 D7셀의 상하,좌우에 근접되는 유효한 값이 들어있는 범위가
하나도 없기 때문이다

아래를 차례로 크릭해보시기 바란다
range("D7:E11").Select
range("D7:E11").CurrentRegion.Select
Range("D7:E11")의 활성화셀 Range("D7")이였고 주변에 정보가 입력된 범위가 없다
Range("D7:E11")에서 활성화셀을 바꿔보고 다시 선택해보자
range("D7:E11").Select
Selection.Cells(4).Activate
ActiveCell.CurrentRegion.Select


아주 자주 사용하는 CurrentRegion속성이니까..
잘 이해하시는것이 좋다
요약하면 Range("D3:G7").CurrentRegion이라고 하면
Range("D3:G7")범위중 딱하나의 첫번째셀 Range("D3")를 중심으로
주변상하좌우에 근접한 정보가 들어있는 범위를 찾게 되는것이다
이때 간단하게 접근하게 해주는 속성이 CurrentRegion 속성인것이다
CurrentRegion속성과 비슷한 속성으로서 UsedRange속성이 있다
이것은 Range오브젝트의 속성이 아니고 Worksheet오브젝트의 속성으로서
현재 시트의 모든 정보가 들어있는 범위에 접근한다
Range("A1").CurrentRegion.Select
Range("B8").CurrentRegion.Select
ActiveSheet.UsedRange.Select


유용한 End속성으로 범위 접근

어떤 셀을 선택후 Ctrl+Shift키를 누른 상태에서 방향키(Up,Down,Right,Left)를
눌러보시기 바란다
어디에 어떻게 선택된 셀이 이동되는지 볼수 있을것이다
이것을 프로그래밍적으로 처리하는것이 Range오브젝트의 End속성이다
End속성자체가 새로운 Range오브젝트에 접근시킨다
이곳에서 이해를 돕기 위한 표기방법에서 오브젝트는 사각박스를 치거나
굵은체로 표기를 하는데..아래와 같이 End가 속성이라면서 왜 사각박스를
둘렀나..앞으로도 계속 나오니까 다시한번 강조하는데..
이 속성의 결과가 오브젝트인것은 속성이나 메소드라고 할지라도
결과에 중점을 두어 오브젝트표시를 하는것이니..잘 가름하여
보면 좋겠다

Range("A1").End(xlUp)는 위로 이동하고
Range("A1").End(xlDown)은 아래로 이동하고
Range("A1").End(xlToRight)은 오른쪽으로 이동하고
Range("A1").End(xlToLeft)은 왼쪽으로 이동한다
Range("A1").End(xlUp)과
Range("A1").End(xlToLeft)는 위나 옆으로 더 갈곳이 없으니
그냥 Range("A1")이 된다

다음과 같이 활용될수 있다

Range(Range("A1"),Range("A1").End(xlDown)).Select
Range(Range("A7"),Range("A7").End(xlToRight)).Select
Range(Range("D3"),Range("D3").End(xlDown)).Interior.ColorIndex=3
Range(Range("C7"),Range("C7").End(xlDown)).Interior.ColorIndex=15
Range(Range("C7"),Range("C7").End(xlToLeft)).Value="XX"



그림에서 보았듯이
범위를 Select하지 않고도 접근된 범위의 속성이나 메소드를
활용한다는 점을 다시 한번 강조한다