Excel 在打开工作簿时保留复选框功能区状态

Excel 在打开工作簿时保留复选框功能区状态,excel,vba,ribbon,Excel,Vba,Ribbon,我在功能区中创建了一个选项卡“MYTAB”,带有两个复选框以隐藏和显示列。 重新打开工作簿时,我需要保留复选框状态 自定义用户界面代码: <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="rxIRibbonUI_onLoad"> <ribbon> <tabs> <tab id="myTab" label="MYTAB">

我在功能区中创建了一个选项卡“MYTAB”,带有两个复选框以隐藏和显示列。 重新打开工作簿时,我需要保留复选框状态

自定义用户界面代码:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="rxIRibbonUI_onLoad">
<ribbon>
    <tabs>
        <tab id="myTab" label="MYTAB">
            <group id="Group1" label="Hide Columns">
                <checkBox 
                    id="chkClass12"
                    label=" Class12"
                    getPressed="rxClass_getPressed"
                    onAction="rxClass_onAction"/>
                <checkBox 
                    id="chkClass34"
                    label="Class34"
                    getPressed="rxClass_getPressed"
                   onAction="rxClass_onAction"/>
            </group>
        </tab>
    </tabs>
</ribbon>
Public b_chkClass12 As Boolean
Public b_chkClass34 As Boolean
Public MyRibbon As IRibbonUI

Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)
    Set MyRibbon = ribbon
End Sub

Public Sub rxClass_getPressed(control As IRibbonControl, ByRef returnedVal)
    Select Case control.ID
        Case "b_chkClass12":
            returnedVal = b_chkClass12

        Case "b_chkClass34":
            returnedVal = b_chkClass34
    End Select
End Sub

Public Sub rxClass_onAction(control As IRibbonControl, pressed As Boolean)
    Select Case control.ID
        Case "chkClass12":
            b_chkClass12 = pressed
            Worksheets("Sheet1").[oClass12].Value = pressed
            Call ShowHideColumns("Class12")

        Case "chkClass34":
            b_chkClass34 = pressed
            Worksheets("Sheet1").[oClass34].Value = pressed
            Call ShowHideColumns("Class34")
    End Select
End Sub

Sub ShowHideColumns(nRange As String)
    Range(nRange).EntireColumn.Hidden = Not Range(nRange).EntireColumn.Hidden
End Sub
Private Sub Workbook_Open()
    With Worksheets("Sheet1").[oClass12]
        If .Value = True Then
            b_chkClass12 = True
        Else
            b_chkClass12 = False
        End If
    End With

    With Worksheets("Sheet1").[oClass34]
        If .Value = True Then
            b_chkClass34 = True
        Else
            b_chkClass34 = False
        End If
    End With
End Sub
此工作簿代码:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="rxIRibbonUI_onLoad">
<ribbon>
    <tabs>
        <tab id="myTab" label="MYTAB">
            <group id="Group1" label="Hide Columns">
                <checkBox 
                    id="chkClass12"
                    label=" Class12"
                    getPressed="rxClass_getPressed"
                    onAction="rxClass_onAction"/>
                <checkBox 
                    id="chkClass34"
                    label="Class34"
                    getPressed="rxClass_getPressed"
                   onAction="rxClass_onAction"/>
            </group>
        </tab>
    </tabs>
</ribbon>
Public b_chkClass12 As Boolean
Public b_chkClass34 As Boolean
Public MyRibbon As IRibbonUI

Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)
    Set MyRibbon = ribbon
End Sub

Public Sub rxClass_getPressed(control As IRibbonControl, ByRef returnedVal)
    Select Case control.ID
        Case "b_chkClass12":
            returnedVal = b_chkClass12

        Case "b_chkClass34":
            returnedVal = b_chkClass34
    End Select
End Sub

Public Sub rxClass_onAction(control As IRibbonControl, pressed As Boolean)
    Select Case control.ID
        Case "chkClass12":
            b_chkClass12 = pressed
            Worksheets("Sheet1").[oClass12].Value = pressed
            Call ShowHideColumns("Class12")

        Case "chkClass34":
            b_chkClass34 = pressed
            Worksheets("Sheet1").[oClass34].Value = pressed
            Call ShowHideColumns("Class34")
    End Select
End Sub

Sub ShowHideColumns(nRange As String)
    Range(nRange).EntireColumn.Hidden = Not Range(nRange).EntireColumn.Hidden
End Sub
Private Sub Workbook_Open()
    With Worksheets("Sheet1").[oClass12]
        If .Value = True Then
            b_chkClass12 = True
        Else
            b_chkClass12 = False
        End If
    End With

    With Worksheets("Sheet1").[oClass34]
        If .Value = True Then
            b_chkClass34 = True
        Else
            b_chkClass34 = False
        End If
    End With
End Sub
保存值的工作表

名称管理器'

问候,,
Elio Fernandes

一种方法是将值存储在一个隐藏的工作表中,但我记得有人将它们保存在一个Excel
Name
中,这非常简洁:Ambie,我正在这样做。但当工作簿打开时,复选框为空。我认为工作簿的“打开”过程中缺少了一些内容。我相信它们在打开时会保留默认状态,直到您使功能区无效为止。请告诉我应该如何以及在何处执行。这在我的第一条评论的链接中。