Excel 2010 - RibbonX 드롭다운 컨트롤을 어떻게 지우나요?

Excel 2010 - RibbonX 드롭다운 컨트롤을 어떻게 지우나요?

Excel 2010에서 VBA 코드를 통해 드롭다운 선택을 지우는 데 어려움을 겪고 있습니다. 이 작업을 수행하려는 이유는 먼저 다른 항목으로 변경하지 않고 동일한 항목을 연속적으로 클릭하면 onAction 이벤트가 실행되지 않기 때문입니다.

좀 더 자세히 살펴보니 InvalidateControl 메서드가 컨트롤의 캐시된 값을 지운다는 내용을 읽었습니다. 그래서 구현했는데..

Sub getUIHandle(ribbon As Office.IRibbonUI)
    Set MyRibbon = ribbon
End Sub
----
Sub LabelCallback(control As IRibbonControl, id As String, index As Integer)

    Select Case id
        Case "CH1"
            ' take some action
        Case "CH2"
            ' take some action
        Case "CH3"
            ' take some action
        Case "CH4"
            ' take some action
    End Select

MyRibbon.InvalidateControl (control.id)
End Sub

호출을 추적한 결과 내 getUIHandle 하위가 호출되고 있고 InvalidateControl 호출이 호출되고 있음을 알고 있습니다. 단순히 컨트롤을 무효화하지 않습니다. :)

dropDown RibbonX 컨트롤의 현재 선택된 값을 지우는 방법이 있습니까?

편집하다:

코드를 리팩터링하고 LabelCallback 서브루틴을 변경하여 상태 변수를 설정했으며, 리본에 별도의 버튼이 실제로 '일부 작업 수행' 루틴을 트리거하도록 하여 이 문제를 해결했습니다. 내 의견으로는 우아하지 않습니다. (감히 투박하다고 말할 수 있습니까?) dropBox 항목이 선택되었을 때 작업을 수행하는 것이 훨씬 더 합리적이며 어떤 항목을 선택했는지에 관계없이 이벤트가 실행되면 아름답게 작동할 것입니다.

관련 정보