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

Application_1|ActiveCell|ActiveSheet|ActiveWindow|ActivePrinter|
|CellDragAndDrop|DisplayFormulaBar|DisplayStatusBar|
|ShowWindowsInTaskbar|OLEObjects.Add|
|Shapes.AddOLEObject|Checkboxes.Add|

다양한 지원을 하는 Application오브젝트

Application오브젝트는 Excel 그자체이다
엑셀이 갖고 있는 모든 오브젝트를 총괄 관리하는 오브젝트인것이다
앞에서 언급했던..

Application.ActiveCell
Application.ActiveSheet
Application.ActiveChart
Application.ActiveWindow
Application.ActivePrinter

등과 같이 각각의 현재활성화된 오브젝트를 지름길로
접근할수 있는 속성을 제공하는것이다
구문 작성시 앞의 회색빛의 Application. 은 생략해도 되는것이다
현재 Range("A3")가 활성화된 셀일때 21이라는 숫자를 입력한다면

Range("A3").Value=21

이라고 할수 있지만 지름길로 간다면

Application.ActiveCell.Value=21

라고 간략하게 표현할수 있다
이렇게 Application오브젝트는 각각의 예하부대(오브젝트들)을 지원하는
참모부들이 구성 되어 있는 것이다

시트를 삭제하려 할때
삭제를 하겠느냐??고 확인하는 메시지 박스를 뜨게 할것인가 말것인가??
이런 속성은 하위 오브젝트의 어딘가에 두기는 일의 성격이 맞지 않는다
이런것들을 모두 Application오브젝트에서 몰아서 관리하는것이다

Application.Displayalerts=True

위와 같은 경우는 Application을 생략하면 안된다
복습하는 차원에서 앞에서 사용하였던것을 살펴보았다
ActiveWindow,ActiveChart,ActivePrinter는 아직 다루지 않은 오브젝트이지만..

새로운 Application오브젝트가 관리하는것들을 살펴 보도록 한다

Application.CellDragAndDrop = True Application.CellDragAndDrop = False


소루션을 개발하여 배포하였을때..사용자가 엉뚱하게 범위를
마우스로 잡아 끌어서 필요한 정보를 삭제나..덮어쓰기를 해버려
결국에는 에러가 나는 그런 일이 생기는것을 방지할수 있다

Application.DisplayFormulaBar = True Application.DisplayFormulaBar = False

아래의 화일에서 아래의 그림과 같이 각각의 속성의 의미를 살펴보기 바란다



Application오브젝트관련 이야기를 하다가 샛길로 좀 빠져야 겠다
엑셀프로그래밍이라는 것이 다양한 오브젝트를 조합하는 일이다 보니
Application오브젝트를 이야기 하면서 어쩔수 없이 다른 오브젝트를
이야기 할수 밖에 없다
VBA에 관한 문법외에는 모두가 어느것이 먼저라고 할수 없는 그런 관계들이다
그래서 순서가 앞뒤를 오가더라도 나중에 메뉴상에서 구분하기로 하고
콘트롤에 대한 이야기를 좀 하여야 겠다
통합문서에 체크박스를 사용하여 Application오브젝트를 이해하도록
하다 보니 체크박스에 대한 이야기를 해야 겠다
우선 가장 헷갈려하는 부분이 있다
양식도구상자와 콘트롤 도구상자..왜 똑같이 생긴것이 두개가 있는가??

양식도구상자의 체크박스 만들기 콘트롤도구상자의 체크박스 만들기


생긴것은 똑같은데 왜 헷갈리게 두개를 만들어 놓았나??
대개 콘트롤을 설치할때는 위와 같은 자동화로 하지 않고
손으로 직접 그려 넣는 것이 좋을 것이다
손으로 직접 그려넣을때는
양식도구상자의 콘트롤은
보기/도구모음/양식
콘트롤도구상자의 콘트롤은
보기/도구모음/콘트롤도구상자에서 그려 넣는다
양식도구상자의 것은 아주 오래된 엑셀시절에 DialogSheet라는 지금의
UserForm을 대신하는 유치한 상태의 대화상자를 만들어서 사용했었고
그때 엑셀자체의 오브젝트로 구성된 것이다
그러나 시절이 지나고 엑셀97에서 부터 DialogSheet대신에
UserForm이라는 오피스전체의 대화상자용 오브젝트를 지원하게 되어
DialogSheet오브젝트는 거의 사용하지 않는 상태가 되었고
이때 사용되던 양식콘트롤을 버리자니 아깝고..그냥 같이 사용하고
있는 상태가 된것이다

상황에 따라서 두가지를 적절히 활용하면 된다
아래의 화일에서는 콘트롤도구상자에서 지원하는 ActiveX콘트롤을
사용하여 엑셀의 옵션 설정 자동화를 살펴본다

Observe Excel Options