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

Range|Union|Intersect |Union|Range|Areas|Count|EntireRow|EntireColumn|
|Shift+SpaceBar|Ctrl+SpaceBar|Intersect|SelectionChange|

Range속성과 Union메소드 조금 더..

Range(Range("A1"),Range("C10"))과
Union(Range("A1"),Range("C10")) 은 어떻게 틀릴까???
아래의 그림과 같이 전혀 개념이 틀리다


헷갈리지 마셔야 할것은
Range(Range("A1"),Range("C10"))와 Range("A1,C10")를 잘 구별하셔야 한다
다시 말해서
Range("A1,C10")와 Union(Range("A1"),Range("C10"))는 같다
각각 접근한 범위의 영역의 갯수는 틀리게 된다
Range(Range("A1"),Range("C10")).Areas.Count
의 Count속성값은 1이고
Union(Range("A1"),Range("C10")).Areas.Count
의 Count속성값은 2인것이다..

아마도 엑셀수식에 능하시고 함수에 능하신분중에
워크시트함수의 하나인 INDEX함수를 좀더 상세하게 활용하시는 분들은 ..
으흠..그 소리가 그 소리구나!!!라고 할것이고..
다양한 범위를 다양하게 접근할수 있는 융통성있는 메소드!
아래화일에서는 아래의 그림과 같이 Union메소드를 활용해보자




Use Union And ShowPrecedents_FormulaArray

정보가 없는 행이나 열을 모두 삭제하고 싶다

정보가 없는 빈행이나 열을 삭제하고 싶을때가 있을것이다

Range("A1").EntireRow

라고 하면 A1셀이 포함된 전체 행에 접근하고
이것은 A1셀을 선택한 상태에서
Shift+SpaceBar를 누른것과 같은 효과이고

Range("A1").EntireColumn

이것은 A1셀을 선택한 상태에서
Ctrl+SpaceBar를 누른것과 같은 효과이다
라고 하면 A1셀에 포함된 전체 열에 접근한다
여기에서도 Union메소드를 사용하면 편리하다

Delete Blank Rows With Union Method

만약 Union메소드가 없다면 아래와 같이 구차하게 삭제작업을
하여야 할것이다
엑셀의 셀이나 행을 삭제할때 어떤 현상이 일어나는지 잘 관찰할수
있는 문제이다

Delete Blank Rows WithOut Union Method

셀이나 열을 삭제하면 셀들의 위치가 어떻게 변하는지
이해하고 있는것이 좋을것이다
아래화일에서 특성을 관찰,이해하는 것이 엑셀프로그래밍에 도움이 될것이다

How Cells Move Around When Delete Happen

어떤 범위가 다른 범위내에 있는지 알고 싶을때가 있다,그리고 이벤트프로시져..

작업을 하다 보면 어떤 범위가 어떤 범위내에 있는지 알아야할
경우가 수시로 발생한다
아래의 그림과 같이 정해진 범위내에의 셀만 선택할수 있게
통제하여야할 경우가 많다



이때 사용되는 메소드가 Intersect메소드이다
이 메소드는 Range오브젝트의 것이 아니고 Application오브젝트의 것이다
Worksheet오브젝트의 SelectionChange이벤트프로시져의 활용도 같이 보도록 한다
이벤트프로시져는 여러분의 눈에 이물질이 들어 가려고 하는 순간
여러분의 두뇌가 갖고 있는 프로그램은 즉각 반응하여 눈꺼풀이 닫히게 된다
여러분의 프로그램의 성능이 좋지 않다면
이물질이 직방으로 눈으로 들어갈것이고..
그렇지 않으면 눈꺼풀의 순식간에 안전모드로 바뀌어
안전하게 될것이다
이벤트프로시져는 이런 자극(Stimulus)과 반응(Response)의 절차를
흉내낸것이라고 생각하면 이해가 쉽다
여러분이 마우스로 어떤 범위를 선택하는 순간..
어떤 반응을 일으키도록 할것인지 여러분이 설계 할수 있는것이다

현대의 모든 프로그래밍은 Event-Driven,
이벤트발생에 따른 반응으로 된것이다
사용하는 인터넷의 모든것은 마우스의 행동에
따른 반응의 설계인것이다
아래의 곳에 마우스를 시키는대로 해보시기 바란다

이곳에 마우스를 이곳에 올려라!!

이곳을 계속 크릭하라!!

위의 두개의 상자에서 마우스의 동작에 따라서
어떤 행동을 하라고 이벤트프로시져에 설계를 해놓은대로 반응하는것이다
엑셀에서도 역시 마찬가지 인것이고
엑셀프로그래머는 엑셀의 오브젝트가 제공하는
이벤트프로시져를 잘 활용하면 되는것이다
이벤트프로시져도 역시 일반 프로시져와 같은것이고
앞에서 설명한 모든 VBA문법을 적용하여 엑셀의 오브젝트의 속성,메서드를
활용해 나가는것이다
아래의 화일에서는 Intersect라는 메소드를 활용하여 보도록 한다
아래를 크릭해 보시기 바란다
Range("B2:C6,C4:D8").Select
Range("B2:C6,C4:D8").Interior.ColorIndex=15
Intersect(Range("B2:C6"),Range("C4:D8")).Select
워크시트수식의 Intersect 연산자와 같은 효과
만약 교차되지 않는 다면..intersect(range("B2:C6"),range("C7:D8")).Select

엑셀수식에 능숙하신 분들도 아마..수식의 입력에 있어서
Intersect연산자를 어떻게 사용하는지 모르시는 분들이 많을것이다

EventProcedure With Intersect Method