Кнопки / текст пользовательской формы Excel сбрасываются при переключении между пользовательскими формами - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть книга Excel, в которой одновременно используются две пользовательские формы. Существуют различные кнопки, текстовые поля, меняющиеся метки и так далее, которые после установки будут сброшены простым нажатием второй пользовательской формы, а затем первой. Раньше он работал без непреднамеренного сброса, и в программе ничего не изменилось, поэтому я не понимаю, почему это происходит. Он включает в себя контент, связанный с работой, поэтому я не могу опубликовать реальный код, однако я надеялся, что кто-то мог иметь опыт работы с этим раньше. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 апреля 2020

Это способ управления формой. Вот небольшой фрагмент, который даст вам основы. Требуется наличие пользовательской формы с именем MyForm с одним текстовым полем с именем TextBox1 и командной кнопкой, которая скрывает форму при нажатии.

Sub CallUserForm()

    Dim Frm As MyForm

    ' This command creates a new instances of the form.
    Set Frm = New MyForm
    With Frm
        ' you now have full access of the form
        .TextBox1.Value = "Good morning!"
        ' but it isn't shown until you show it.
        .Show
        ' now Frm has taken control
        ' and will retain control until it meets the Me.Hide command
        ' after "Hide" code sumes here
        MsgBox .TextBox1.Value
    End With

    ' although hidden, the form still exists in memory.
    ' you could show it again, unchanged
    If MsgBox("Do you want to show the form again?", vbYesNo) = vbYes Then
        Frm.Show
    Else
        Unload Frm                  ' now the form is destroyed
                                    ' other instances may still exist
    End If
    Set Frm = Nothing
End Sub

Более элементарное обучение поможет вам запустите форму с помощью команды Show и завершите показ с помощью Unload Me. Цель моего приведенного выше кода - показать вам, что существует объект (форма), и если вы никогда не присваивали его переменной, вы никогда не получали контроль над ним. В приведенном выше коде у вас есть доступ к форме как до Show, так и после.

И, конечно, после того, как вы Unload Me, форма исчезнет со всем, что в ней содержится. Вы бы совершенно не ожидали, что это произойдет, если вы просто Hide заполните форму Me.Hide, когда нажата командная кнопка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...