Programming/VBA(Excel)

엑셀 리본바의 버튼 컨트롤 상태(Pressed, Visible) 관리하기

juhpark 2024. 4. 10. 15:51

엑셀 리본바의 컨트롤(버튼, 토글버튼 등)의 상태를 관리하는 방법을 설명한다. 즉, 토글버튼이 눌려져 있게 하거나 보이지 않게 한다거나 여러가지 상태를 관리하는 방법이다.

기본적으로 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

 

반응형