배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
엑셀, 곽승주님의 오튜공구함 제작으로 배워보는 VBA 이야기, Excel

7. 엑셀 옵션의 변경 (1)

자료다운로드 : 오튜공구함007.xls 

안녕하세요, 벌써 지난 주에 글을 올렸는데 금새 글을 올릴 차례가 되었군요. 

요즘 신문을 보니 메모리가격도 많이 떨어지고 Pentium4가격이 많이 내려가 구입할 기회라고 하더군요. 저는 PC를 3대, 노트북1대를 가지고 있습니다. 이런 소리를 하면 남들이 부자인줄 압니다. 그러나 Pentium60, Pentium133, Pentium166, Pentium133노트북입니다. 그 중에 2대는 친구들이 업그레이드하면서 제게 준 것입니다. 

이렇게 고물들을 모아둔 것은 네트워크로 연결하는 공부를 하고자 하는 것인데 집이 좁아 아직 두대 밖에 연결 못하고 있죠. 네트워크로 연결되면 고물이라고 해도 쓸모가 있습니다. 파일서버, 프린트서버, 팩스서버로 활용하면 비싼 장비를 사지 않아도 됩니다. 더욱이 최근에는 "리라"를 만들 수 있습니다. "리라"가 뭐냐구요? 리눅스라우터의 줄임말이죠. 486정도의 PC에 리눅스를 설치하여 라우터대용으로 사용할 수 있습니다. 그러므로 업그레이드를 하면서 예전 PC를 버리지 마시고 이런저런 용도로 사용해보시길… 

오늘은 간단하게 옵션 대화 상자의 내용 일부를 매크로로 살펴보기로 하겠습니다. 모든 걸 다루자니 어려운 것도 아닌 것이 너무 길어서 [옵션]대화 상자의 [화면표시]탭 페이지에서 [창 옵션]부분만 살펴보도록 하겠습니다. 

사실 프로그래밍을 할 것은 없습니다. 매크로 기록기를 켜두고 옵션대화상자의 이런 저런 옵션을 만지작 거리면 코드가 만들어 집니다. 그리고 만들어진 코드를 약간 손만 보면 될 것니다. 

With ActiveWindow
     .DisplayFormulas = True
     .DisplayGridlines = True
     .GridlineColorIndex = 55
     .DisplayHeadings = False
     .DisplayOutline = False
     .DisplayZeros = False
     .DisplayHorizontalScrollBar = False
     .DisplayVerticalScrollBar = False
     .DisplayWorkbookTabs = False
End With

보시다시피 현재 창을 나타내는 개체는 ActiveWindow입니다.
With ActiveWindow

     .DisplayFormulas = True

셀 구분선과 구분선의 색상을 지정하는 부분이죠. 종종 시트를 깔끔하게 만드느라 이걸 가끔 꺼둡니다.
     .DisplayGridlines = True
     .GridlineColorIndex = 55

Headings 이란 시트에서 "행열 머리글"이라고도 합니다. 열이름에는 A,B,C,D,E,F,G,… 행은 1,2,3,4,…등이 붙어 있는데 이걸 보이거나 숨기려는 경우 사용합니다.
     .DisplayHeadings = False

Outline이란 "윤곽"이라고 하는데, 다음 그림과 같은 윤 곽버튼을 보기거나 숨깁니다.

     .DisplayOutline = False
셀에 "0"을 보여줄 것인지를 결정합니다.
     .DisplayZeros = False

수평 스크롤바와 수직 스크롤바를 보여주거나 숨긴다.
     .DisplayHorizontalScrollBar = False
     .DisplayVerticalScrollBar = False

시트탭을 보여주거나 숨깁니다.
     .DisplayWorkbookTabs = False
End With

이제 셀구분선을 보여주거나 숨기는 ActiveWindow .DisplayGridlines를 오튜공구함 메뉴에서 다루는 방법을 보일 차례이다. [오피스튜터도구] 메뉴의 [셀과 범위]를 선택하면 다음과 같은 메뉴가 보일 것입니다.

위의 메뉴에서 [셀구분선]을 클릭할 때 마다 구분선을 보이거나 숨기려면 다음과 같은 코드를 작성합니다.

     If ActiveWindow.DisplayGridlines=TRUE Then
          ActiveWindow.DisplayGridlines=FALSE
     Else
          ActiveWindow.DisplayGridlines=TRUE
     End If

그러나 이 정도는 초보수준이다. IIf()함수를 사용하여 더욱 간단히 해보죠

     ActiveWindow.DisplayGridlines=IIf(ActiveWindow.DisplayGridlines,FALSE,TRUE)

이번에 Not 연산자를 사용하여 더더욱 간단히 해보죠!!!

     ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines

코딩의 수준을 굳이 따진다면 마지막의 코딩이 한결 간단하고 빠를 것입니다. 코딩은 한번에 만들어 지지 않습니다. 많은 단계를 간단히 하고 한 줄이라도 줄여 보려는 노력이 필요한 거죠. 이러한 것이 프로그래밍의 즐거움이자 묘미이죠.

그러나 이 정도에서 만족할 수 는 없죠. [셀구분선]메뉴의 왼쪽을 보면 눌려진 체크표시가 보일 것입니다. 즉 셀구분선이 표시되어 있다는 뜻이 됩니다. 반대로 체크표시가 사라지면 셀 구분선이 없음을 의미할 것입니다. 이를 토글해주기 위해 다음과 같이 셀구분선메뉴의 상태를 바꾸어 주어야 합니다.

아래의 프로시져는 [셀구분선]메뉴버튼의 상태를 변경한 후 메뉴를 탐색하여 ActiveWindow.DisplayGridlines의 값에 따라 상태를 msoButtonDown 혹은 msoButtonUp으로 변경합니다. 메뉴를 찾아 탐색하는 것은 이미 앞시간에 설명한 바가 있어 넘어가겠습니다.

Public Sub DisplayGrid()
     Dim cmdBtn As CommandBarButton
     Dim cmdbarPopup As CommandBarPopup

     ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines

     Set cmdbarPopup = Application.CommandBars("Worksheet Menu Bar") _
          .FindControl(Type:=msoControlPopup, Tag:=USER_TAG)
     Set cmdbarPopup = cmdbarPopup.Controls("셀과 범위")

     For Each cmdBtn In cmdbarPopup.Controls
          If cmdBtn.Caption = "셀구분선" Then
               If ActiveWindow.DisplayGridlines Then
                    cmdBtn.State = msoButtonDown
               Else
                    cmdBtn.State = msoButtonUp
               End If
               Exit For
          End If
     Next

     Set cmdbarPopup=Nothing
     Set cmdBtn=Nothing
End Sub

오늘은 여기까지 입니다. 그럼 다음시간에 만나도록 하죠.

목차 | 이전 | 다음