Excel 如何在初始化期间隐藏某些userform字段?

Excel 如何在初始化期间隐藏某些userform字段?,excel,vba,userform,Excel,Vba,Userform,因此,我有一个由多页组成的用户表单,其中一个页面包含切换按钮,这些按钮隐藏和取消隐藏用户表单以及excel工作表上的字段。下图显示了togglebutton页面 HAZOP/SIL和LOPA的代码相同,但隐藏的字段不同。以下是HAZOP切换按钮的代码 Private Sub togbHAZOP_Click() If togbHAZOP = True Then Sheets("Updated Hours EST").Rows("6:27").EntireRow.Hid

因此,我有一个由
多页
组成的用户表单,其中一个页面包含
切换按钮
,这些按钮隐藏和取消隐藏用户表单以及excel工作表上的字段。下图显示了togglebutton页面

HAZOP/SIL和LOPA的代码相同,但隐藏的字段不同。以下是HAZOP切换按钮的代码

Private Sub togbHAZOP_Click()

    If togbHAZOP = True Then

        Sheets("Updated Hours EST").Rows("6:27").EntireRow.Hidden = False
        Sheets("SCOPE").Rows("31:37").EntireRow.Hidden = False
        Sheets("SUMMARY").Rows("5:8").EntireRow.Hidden = False
        Frame5.Enabled = True
        Frame5.Visible = True
        Frame6.Enabled = True
        Frame6.Visible = True
        Frame7.Enabled = True
        Frame7.Visible = True
        HazOp.Enabled = True
        HazOp.Visible = True

    Else
        Sheets("Updated Hours EST").Rows("6:27").EntireRow.Hidden = True
        Sheets("SCOPE").Rows("31:37").EntireRow.Hidden = True
        Sheets("SUMMARY").Rows("5:8").EntireRow.Hidden = True
        Frame5.Enabled = False
        Frame5.Visible = False
        Frame6.Enabled = False
        Frame6.Visible = False
        Frame7.Enabled = False
        Frame7.Visible = False
        HazOp.Enabled = False
        HazOp.Visible = False

    End If

End Sub
代码进行初始化,但不起作用,给出一个错误,称为“运行时错误438:对象不支持此属性或方法”


我遇到的问题是如何在代码开始时隐藏userform中的某些字段,并根据用户的选择,使用
切换按钮将隐藏/取消隐藏,因为此时我必须单击切换按钮,然后取消单击以获取隐藏链接字段的位置,然后执行此操作初始化过程中的每一次都会造成麻烦。

请注意,您可以像下面这样减少代码。如果togbHAZOP=True
部分中的
True
替换为
togbHAZOP.Value
,而
False
替换为
中的
Not togbHAZOP.Value
。所以你不需要重复整个代码

Private Sub togbHAZOP_Click()
    Sheets("Updated Hours EST").Rows("6:27").EntireRow.Hidden = Not togbHAZOP.Value
    Sheets("SCOPE").Rows("31:37").EntireRow.Hidden = Not togbHAZOP.Value
    Sheets("SUMMARY").Rows("5:8").EntireRow.Hidden = Not togbHAZOP.Value
    Frame5.Enabled = togbHAZOP.Value
    Frame5.Visible = togbHAZOP.Value
    Frame6.Enabled = togbHAZOP.Value
    Frame6.Visible = togbHAZOP.Value
    Frame7.Enabled = togbHAZOP.Value
    Frame7.Visible = togbHAZOP.Value
    HazOp.Enabled = togbHAZOP.Value
    HazOp.Visible = togbHAZOP.Value    
End Sub
由于
togbHAZOP
是一个开关,因此它没有框架
togbHAZOP.Frame5
,这可能是这里的问题所在。可能应该是这样的:

Private Sub UserForm_Initialize()
    WizardProp.MultiPage1.Value = 0
    Me.MultiPage1.Style = fmTabStyleNone
    Me.Frame5.Enabled = False
    Me.Frame5.Visible = False
    Me.Frame6.Enabled = False
    Me.Frame6.Visible = False
    Me.Frame7.Enabled = False
    Me.Frame7.Visible = False
    Me.HazOp.Enabled = False
    Me.HazOp.Visible = False
End Sub

当你调试它的时候,你知道你在哪一行得到这个错误吗?
Private Sub UserForm_Initialize()
    WizardProp.MultiPage1.Value = 0
    Me.MultiPage1.Style = fmTabStyleNone
    Me.Frame5.Enabled = False
    Me.Frame5.Visible = False
    Me.Frame6.Enabled = False
    Me.Frame6.Visible = False
    Me.Frame7.Enabled = False
    Me.Frame7.Visible = False
    Me.HazOp.Enabled = False
    Me.HazOp.Visible = False
End Sub