2017-10-11 4 views
1

Excelのリボンでカスタムコントロールを非表示にしていて、コードが自分のRefreshRibbon()サブアイテムからメッセージを表示し続けています。コントロールはHideImport()サブから渡す文字列に関係なく表示されたままです。カスタムリボンのXMLと問題のマクロをここに含めます。常に他の質問への回答を読んだ後、それを自分自身を解決するために管理するよう Excelのリボンでカスタムコントロールを非表示にできない

Dim ribControl As IRibbonUI 
Public strTag As String 

Sub RibbonOnLoad(ribbon As IRibbonUI) 
    Set ribControl = ribbon 
End Sub 

Sub GetVisible(control As IRibbonControl, ByRef visible) 
    If strTag = "Show" Then 
    visible = True 
    Else 
    If control.Tag Like strTag Then 
     visible = True 
    Else 
     visible = False 
    End If 
    End If 
End Sub 

Sub RefreshRibbon(Tag As String) 
    strTag = Tag 
    If ribControl Is Nothing Then 
    MsgBox "Error, Save/Restart your workbook" 
    Else 
    ribControl.Invalidate 
    End If 
End Sub 

Sub ReadDetail(control As IRibbonControl) 
    MsgBox "This is Read Detail" 
End Sub 

Sub AddLeg(control As IRibbonControl) 
    MsgBox "This is Add Leg" 
End Sub 

Sub RemoveLeg(control As IRibbonControl) 
    MsgBox "This is Remove Leg" 
End Sub 

Sub RetimeLeg(control As IRibbonControl) 
    MsgBox "This is Retime Leg" 
End Sub 

Sub HideImport() 
    Call RefreshRibbon(Tag:="*True") 
End Sub 

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<ribbon startFromScratch="false"> 
    <tabs> 
     <tab id="tabControl1" label="Control"> 
      <group id="grpImport1" label="Import" getVisible="GetVisible" tag="ShowFalse"> 
       <button id="btnDetail" label="Read Detail" image="Ex" size="large" onAction="ReadDetail" /> 
      </group> 
      <group id="grpJourneys1" label="Journeys" getVisible="GetVisible" tag="ShowTrue"> 
       <button id="btnLegAdd" label="Add" image="AddLeg" size="large" onAction="AddLeg" /> 
       <button id="btnLegRemove" label="Remove" image="RemoveLeg" size="large" onAction="RemoveLeg" /> 
       <button id="btnLegRetime" label="Retime" image="RetimeLeg" size="large" onAction="RetimeLeg" /> 
      </group> 
     </tab> 
    </tabs> 
</ribbon> 

は、通常はここで公開しないが、これは狂った私を運転しています。

答えて

0

あなたのカスタムリボンコードでコールバック関数を持っていない: 例:<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonOnLoad">

だからあなたがRibbonOnLoad()の手順を実行していないが。したがって、変数を設定していませんribControl

+0

ありがとうございました。前にVBAで使用されていたオブジェクトと思ったonLoadは、IRibbonUI宣言の一部でした。完璧な意味合いを持つようになりました – Lorne

関連する問題