엑셀 리본바의 버튼 컨트롤 상태(Pressed, Visible) 관리하기
엑셀 리본바의 컨트롤(버튼, 토글버튼 등)의 상태를 관리하는 방법을 설명한다. 즉, 토글버튼이 눌려져 있게 하거나 보이지 않게 한다거나 여러가지 상태를 관리하는 방법이다.
기본적으로 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