엑셀 리본바의 컨트롤(버튼, 토글버튼 등)의 상태를 관리하는 방법을 설명한다. 즉, 토글버튼이 눌려져 있게 하거나 보이지 않게 한다거나 여러가지 상태를 관리하는 방법이다.
기본적으로 custom IRibbonUI의 작성은 customUI.xml 파일의 작성을 통해 만들 수 있다. 아래 글을 참조해서 엑셀 상단에 나만의 리본바를 추가할 수 있다.
엑셀의 리본바를 마음대로 변경해 보자
어떤 엑셀 프로그램은 기본 리본바가 아닌 다양한 형태의 리본바를 가지고 있는 엑셀파일들이 존재한다. 사용자리본정의를 통해 만들어진 것은 모든 엑셀파일을 열때 동일하게 적용이 되는데,
juhpark.tistory.com
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="XLGanttTab" label="ExcelGantt" insertBeforeMso="TabHome"> <group id="customGroup1" label="오늘날짜선"> <toggleButton id="Btn1" label="Show Line" size="normal" getPressed="Btn1_onGetPressed" onAction="showLine" imageMso="OutlineExpandAll" /> <button id="Btn2" label="Scroll Today" size="normal" getVisible="Btn2_onGetVisible" onAction="scrollToday" imageMso="WindowSideBySideSynchronousScrolling"/> </group> </tab> </tabs> </ribbon> </customUI>
위와 같은 리본바를 만들었다고 가정했을 때,
토글버튼의 눌려진 상태 관리
토글버튼의 눌려진 상태 관리를 위해서는 getPressed 이벤트를 사용하여 관리한다. 위 customUI.xml 파일에 getPressed 이벤트와 함수명을 입력하고 아래의 코드와 같이 이벤트를 받는 함수를 만들고 ReturnedValue 에 조건에 따라 원하는 상태값( True, Falue)을 입력하면, 눌려진 상태를 관리할 수 있다.
Sub Btn1_onGetPressed(ByRef control As Office.IRibbonControl, ByRef ReturnedValue As Variant) If Sheets("option").Range("B3").value = 1 Then ReturnedValue = True Else ReturnedValue = False End If End Sub
IRibbonControl 객체의 Visible 상태 관리
버튼, 토글버튼 등 IRibbonControl 객체의 Visible 상태를 관리하기 위해서는 getVisible 이벤트를 사용하여 관리한다. 위 customUI.xml 파일에 getVisible 이벤트와 함수명을 입력하고 아래의 코드와 같이 이벤트를 받는 함수를 만들고 ReturnedValu 에 조건에 따라 원하는 상태값(True, False)을 입력하면, Visible 상태를 관리할 수 있다.
Sub Btn1_onGetVisible(ByRef control As Office.IRibbonControl, ByRef ReturnedValue As Variant) If Sheets("option").Range("B3").value = 1 Then ReturnedValue = True Else ReturnedValue = False End If End Sub
'Programming > VBA(Excel)' 카테고리의 다른 글
VBA 엑셀에 공공데이터 휴일정보 읽어오기 (0) | 2024.05.02 |
---|---|
VBA로 엑셀 시트 보호하기(Protect, Unprotect) (0) | 2024.04.18 |
엑셀의 원하는 sheet를 변수에 담기 (0) | 2023.07.12 |
엑셀의 리본바를 마음대로 변경해 보자(ribbon customize vba) (0) | 2023.07.12 |
엑셀의 개발자 도구 사용해보기 (0) | 2023.07.11 |