ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Excel 매크로 (VBA) - 009. 버튼 컨트롤 (Excel Form vs. ActiveX )
    Excel/Excel 매크로 2022. 8. 28. 21:16
    728x90

    전체 목차

     - 001. 특정 행을 복사하여 삽입하기

     - 002. 선택하여 붙여 넣기 기능 정리

     - 003. 변수/Assignment/Loop/비교

     - 004. 데이터가 있는 셀의 범위 알아내기

     - 005. 데이터 시트(쉘) 순회하기

     - 006. 셀 병합 하기

     - 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능) 

     - 008. 정렬하기 (Sort)

     

    포스트 목차

    01. 엑셀 폼 컨트롤 (Excel Form Control or 양식 컨트롤)과 ActiveX 컨트롤 삽입

    02. 컨트롤 속성 및 설정 변경

    03. 이벤트 처리

    04. VBA에서 접근하기

    05. 간단한 예제

     

    본 포스트에서는 엑셀에서 제공하는 폼 컨트롤(양식 컨트롤)과 ActiveX컨트롤의 단추(버튼)을 엑셀 시트에 삽입해보고 둘의 차이점에 대해서 다루려고 한다.

     

    01. 엑셀 폼 컨트롤 (Excel Form Control or 양식 컨트롤)과 ActiveX 컨트롤 삽입

        - 먼저 개발 도구 >> 삽입 >> 단추(양식 컨트롤)을 추가해보자.

     

      - 이번에는 개발 도구 >> 삽입 >> 명령 단추 (ActiveX 컨트롤)을 삽입해보자.

     엑셀에서 양식 컨트롤(Form Control)과 ActiveX컨트롤을 제공한다.

     가장 기본이되는 버튼(단추)을 만든 결과는 위와 같다.

      * 엑셀 한글화 팀에서 구지 단추로 번역을 했지만, 이 포스트에서는 버튼과 단추를 함께 쓰도록 하겠다. 

     

     1) 엑셀 폼 컨트롤의 단추

        기본적으로 "단추"라는 이름이 Caption으로 부여되고, 양식 컨트롤의 추가순서에 따른 번호 1이 뒤에 부여된다.

          *Caption: 버튼 위에 보이는 이름

       

      컨트롤의 이름도 기본 값이 "단추 1"로 부여되어 있다. 

     

     2) ActiveX 컨트롤의 명령 단추

        "CommandButton"이라는 이름이  Caption으로 부여되고, ActiveX 컨트롤의 추가순서에 따른 번호 1이 부여된다.

       

      컨트롤의 이름도 기본 값이 "CommandButton1"로 부여되어 있다.

     

     

    02. 컨트롤 속성 및 설정 변경

     - 단추에 보이는 문자(Caption) 변경

     1) 엑셀 폼 컨트롤 단추

        디자인모드 > 단추 우클릭 > 텍스트 편집  또는 디자인모드에서 버튼 텍스트부분 클릭


    편집 활성화

      2) ActiveX 명령 단추

       디자인모드 > 속성 > Caption 편집 

    - 엑셀 메뉴로 변경할 수 있는 것들

    1) 엑셀 폼 컨트롤 단추

     디자인모드 > 버튼에서 우클릭 > 컨트롤 서식

     주로 텍스트 관련 내용, 크기관련 내용을 변경할 수 있음

     

     2) ActiveX 명령 단추

    디자인모드 > 버튼에서 우클릭 > 컨트롤 서식

    크기 관련 내용 편집 가능하며 디자인모드 > 버튼에서 우클릭 > 속성에서 좀 더 다양한 내용 편집가능

     

    03. 이벤트 처리

     

    버튼(단추)를 추가하는 이유는 사용자가 버튼을 눌렀을 때 특정 동작을 수행하려는 것이다. 버튼을 클릭했을 때 처리해야되는 루틴을 추가하는 법은 두 버튼에 약간의 차이가 있다. 

     

    1) 엑셀 폼 컨트롤 단추

     - 처음 단추를 추가하는 순간 매크로 지정 대화상자가 팝업될 때 지정

    - 디자인모드>단추에서 마우스 우클릭>매크로 지정

     

    매크로 지정 후에 모듈이 자동으로 생기면서 모듈에 Sub 프로시저가 생기는 것을 알 수 있다.

     

    2) ActiveX 명령 단추

      - 디자인모드>단추에서 마우스 우클릭>코드보기

     

     

     코드 보기 후에 Sheet1에 Sub 프로시저가 생기는 것을 알 수 있다. 

     

    04. VBA에서 접근하기

     

    버튼의 경우 클릭 이후에 버튼 컨트롤 자체에 접근할 일이 별로 없지만, 버튼의 텍스트를 바꾼다던지 몇몇 작업을 위해 컨트롤에 접근해야할 일이 있다면 다음과 같이 할 수 있을 것이다.

     

    1) 엑셀 폼 컨트롤 단추

     - 모듈에 있는 Sub 프로시저 또는 Sheet에 있는 Sub 프로시저에서의 접근

    엑셀 폼 컨트롤은 Shaspe 객체로 볼수 있기 때문에 다음과 같이 접근이 가능하다.

    (ActiveSheet 대신에 WorkSheet를 특정할 수 있는 객체면 사용가능하다)

     

    ActiveSheet.Shapes("컨트롤 이름")

    화면에 보이는 버튼위의 텍스트를 고치려면 다음과 같이 하면 된다.

    ActiveSheet.Shapes("컨트롤 이름").Characters.Text  = "바꿀 내용"

    만약 버튼을 숨기고 싶으면 다음과 같이 하면 된다.

    ActiveSheet.Shapes("컨트롤 이름").Visible = False

     

    Shape에 대한 자세한 정보는 다음 링크에 나와 있다.

    https://docs.microsoft.com/en-us/previous-versions/office/dn301031(v=office.15)?redirectedfrom=MSDN 

     

    Shape Properties (Excel)

    Table of contents Shape Properties (Excel) Article 05/23/2016 5 minutes to read In this article Properties Adjustments Returns an Adjustments object that contains adjustment values for all the adjustments in the specified shape. Applies to any Shape object

    docs.microsoft.com

     

    2) ActiveX 컨트롤

     - Sheet 에 있는 Sub 프로시저에서의 접근

       콘트롤 이름으로 바로 접근가능하다.   

       다음은 버튼의 텍트를 변경하는 예제이다.

       CommandButton1.Caption = "변경"

     

    - 모듈에 있는 Sub 프로시저에서의 접근

    ActiveX 컨트롤은 OLE객체이기 때문에 다음과 같이 접근이 가능하다.

    ActiveSheet.OLEObjects.Object

    화면에 보이는 버튼위의 텍스트를 고치려면 다음과 같이 하면 된다.

    ActiveSheet.OLEObjects("컨트롤 이름").Object.Caption = "변경"

    ActiveX 객체에 무슨 속성이 있는지는 해당 객체를 살펴봐야한다.

     

    05. 간단한 예제

     

     

    엑셀 폼 단추2개를 추가, ActiveX 명령 단추 2개를 추가한다.

    폼 단추(단추1, 단추3), ActiveX 명령 단추(Command Button 1, 원복)

    각각의 보여지는 이름을 위 처럼 변경한다.

     

    1) 단추1을 클릭하면 단추 1의 텍스트가 "변경"으로 변경되며, 단추 자체가 사라져 버린다.

    2) 단추3을 클릭하면 단추 1이 다시 생긴다.

    3) Command Button 1을 클릭하면  명령 단추1의 텍스트가 "변경"으로 변경된다.

    4) 원복 버튼을 클릭하면 단추1의 텍스트가 "단추 1"로 변경, 명령단추(Command Button 1)의 텍스트가 "Command Button 1"로 원복된다.

     

    코드는 다음과 같다.

    단추1 및 단추3을 클릭했을 때의 처리 루틴

    명령버튼1, 명령버튼2를 클릭했을 때의 처리루틴

     단추1, Command Button 1, 단추3을  클릭했을 때의 모습

     

     

    원복 버튼을 눌렀을 때의 모습

     

    지금까지 컨트롤 중에 가장 단순한 버튼에 대해서  알아봤으며, 엑셀에서 제공하는 폼 단추, ActiveX 명령 단추의 차이점에 대해서도 간단히 알아봤습니다. 코딩에 도움이 되면 좋겠습니다.

    728x90
Designed by Tistory.