Как скрыть определенные поля пользовательской формы во время инициализации? - PullRequest
1 голос
/ 20 марта 2019

Итак, у меня есть пользовательская форма, состоящая из Multipages, и одна из страниц содержит togglebuttons, которые скрывают и отображают поля в пользовательской форме, а также на листе Excel.На рисунке ниже показана страница переключателя.

enter image description here

Код для 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

Код для инициализации в данный момент, но он не работает, выдает ошибку, говорящую "Run-time error 438: Object doesn't support this property or method"

Private Sub UserForm_Initialize()

    WizardProp.MultiPage1.Value = 0
    Me.MultiPage1.Style = fmTabStyleNone
    togbHAZOP.Frame5.Enabled = False
    togbHAZOP.Frame5.Visible = False
    togbHAZOP.Frame6.Enabled = False
    togbHAZOP.Frame6.Visible = False
    togbHAZOP.Frame7.Enabled = False
    togbHAZOP.Frame7.Visible = False
    togbHAZOP.HazOp.Enabled = False
    togbHAZOP.HazOp.Visible = False

End Sub

Проблема, которую я имеюИмея это , как я могу скрыть определенные поля в пользовательской форме в начале кода и на основе выбора пользователя с помощью togglebuttons будет скрывать / показывать, потому что в данный момент я должен нажать на кнопки переключения затемотмените щелчок, чтобы найти его там, где связанные поля скрыты, и делать это каждый раз во время инициализации может быть неприятно.

1 Ответ

2 голосов
/ 20 марта 2019

Обратите внимание, что вы можете уменьшить код, как показано ниже. Замените True на togbHAZOP.Value и False на Not togbHAZOP.Value в части If togbHAZOP = True. Так что вам не нужно повторять весь код.

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
...