Daily Life of BlueRose

컴퓨터 & 코딩 공부/엑셀 & VBA

엑셀 VBA 기본기능 정리 - ActiveX 개체 활용하기

푸른로즈 2023. 11. 16. 21:53
728x90

엑셀 VBA 기본기능 정리 - ActiveX 개체 활용하기

  • 개요
    • ActiveX 개체 : 버튼, 드롭박스, 라디오버튼, 레이블 등 양식을 만들고 이를 프로시저에서 변수로 불러오거나 이벤트를 정의할 수 있는 개체
    • 주의사항
      • ActiveX개체와 달리 단순 양식개체는 성능은 비슷할지 모르나 매크로창에서 OLEObject로 불러올 수 없는 결정적인 차이가 있다.
      • 개체의 하위종류에 따라(옵션버튼, 체크박스, 텍스트박스 등) 가질 수 있는 속성값이 다르므로 특정 속성값을 검색하는 for문을 만들 경우 종류별로 접근법을 달리해야 한다.
      • ActiveX개체가 많을수록 시트를 복사하고 불러오는데 매우 느려진다.
      • ActiveX개체를 그룹으로 묶은 경우, 값을 불러오는 경로가 달라지므로 옮길때만 그룹으로 묶고 실 사용전에는 풀어주어야 정상작동한다.
728x90
  • 종류
    • OptionButton : 라디오 버튼 형태이며, 그룹 당 1개만 선택 가능하다.
    • CheckBox : 체크박스 형태이며 그룹과 무관하게, 선택/해제가 가능하다.
    • TextBox : 텍스트를 입력하는 칸으로, 특정 셀의 값과 실시간 연결할 수 있다.
    • Label : 텍스트를 단순 표시만 가능한 칸으로, 특정 셀과 실시간 연결은 불가능하다.
  • 공통 메서드(OLEObjects 개체의 속성)
    • Count : 전체 OLEObjects의 개수를 구한다.
    • 그 외 : OLEObjects는 추가/삭제 등을 위한 클래스 메서드를 지니나 그 외 실제 조작에서 사용되는 부분은 대부분 속성에 위치해 있다.
  • 공통 속성(OLEObjects 개체의 속성)
    • 데이터 세팅 관련 : AutoLoad(상시 불러오기 vs 갱신요청시 불러오기), Enabled(수정가능여부)
    • 모양 관련 : Border, Interior, Width, Height, Left(좌측 끝 위치). Top(상단 끝 위치), Visible
    • 기타 : Name(각 Object의 고유값 이름)
  • 종류별 속성(OLEObjects.Object의 속성)
    • GroupName : OptionButton / CheckBox에서 확인가능. 각 버튼들이 속하는 그룹을 지정할 수 있다. 특히 OptionButton의 경우, 그룹이 정해지면 그룹 내 단 1개만 활성화가 가능하도록 세팅된다. 그룹명을 기준으로 조회하는 경우가 많으므로 필수적으로 입력해야 함
    • Caption : Label / OptionButton / CheckBox에서 확인가능. 버튼이나 라벨에 대한 텍스트를 입력하여 화면에 표기가능하다. 내부 값인 Value와는 별개의 값이다.
    • Value : OptionButton / CheckBox에서 확인가능하다. Bool값으로 표현된다.
    • Text : TextBox에서 확인가능하다. Label에서는 Caption값이 이를 대신한다.
    • LinkedCell : OptionButton / CheckBox / TextBox에서 확인가능하다. 연결된 셀이 있는 경우, 해당 셀의 값을 불러오고 실시간으로 연동한다. 버튼계열은 TRUE/FALSE로 표기되며, 연결된 셀에 다른 값이 있다면 버튼이 불활성화 상태로 화면에 표시된다. 텍스트박스의 경우, 셀의 값을 실시간으로 조회/입력 가능하다.
  • 외부 메서드
    • 특정 개체의 종류 확인하기
      • TypeName(OLEObject.Object) : 결과값은 OptionButton, CheckBox 등 유저에게 제공되는 일반적인 명칭으로 반환된다.
      • ActiveSheet.OLEObjects(i).progID : 오브젝트를 눌렀을 때 나오는 =EMBED("■.1.","")의 ■부분에 위치한 값이 반환된다. 가령 OptionButton의 경우엔 "Forms.OptionButton.1"이 반환된다.
    • 인덱스로 불러오기 : ActiveSheet.OLEObjects(i)
    • 순회 : For Each objX In ActiveSheet.OLEObjects
반응형