Настройка атрибута многостраничного значения приводит к сбою Excel - PullRequest
1 голос
/ 28 июня 2019

У меня есть многостраничный пользовательский элемент управления с двумя страницами и кнопками для отмены, возврата, следующего и завершения.

Когда я устанавливаю атрибут multipage.value в подпункте кнопки «назад», вычитая 1, Excel зависает / зависает.

Private Sub btn_Back_Click()
        ' Set the buttons
        Me.btn_Next.Enabled = True
        Me.btn_Finish.Enabled = False
        Me.btn_Back.Enabled = False
        Me.multipage_add_xfr.value = Me.multipage_add_xfr.value - 1
End Sub

Код для перехода на вторую страницу путем добавления 1 прекрасно работает в подпункте btn_Next_Click():

 Me.multipage_add_xfr.value = Me.multipage_add_xfr.value + 1

Наконец, при UserForm_Initialize() установка многостраничного управления на первую страницу (например, значение = 0) также приводит к сбою Excel.

Me.multipage_add_xfr.value = 0

UPADTE Следующий код работает в новой пользовательской форме, созданной в текущем проекте, но старая пользовательская форма - нет.

Private Sub CommandButton1_Click()
      Me.CommandButton1.Enabled = False
      Me.CommandButton2.Enabled = True
      Me.MultiPage1.value = Me.MultiPage1.value + 1
End Sub

Private Sub CommandButton2_Click()
      Me.CommandButton2.Enabled = False
      Me.CommandButton1.Enabled = True
      Me.MultiPage1.value = Me.MultiPage1.value - 1
End Sub

Private Sub UserForm_Initialize()
      Me.CommandButton2.Enabled = False
      Me.CommandButton1.Enabled = True
      Me.MultiPage1.value = 0
End Sub

Мысли

1 Ответ

1 голос
/ 28 июня 2019

Попробуйте это.

Private Sub btn_Back_Click()
    If multipage_add_xfr.Value < 1 Then Exit Sub '<~~ Add this one line

    Me.btn_Next.Enabled = True
    Me.btn_Finish.Enabled = False
    Me.btn_Back.Enabled = False
    Me.multipage_add_xfr.Value = Me.multipage_add_xfr.Value - 1
End Sub

Наконец, в UserForm_Initialize () установка многостраничного элемента управления на первую страницу (например, значение = 0) также приводит к сбою Excel.

В этом случае удалите элемент управления и создайте его заново. Если это по-прежнему не помогает, возможно, вам придется воссоздать форму ...

Вы также можете проверить, решает ли установка значения 0 в Private Sub UserForm_Activate() проблему?

Обратите внимание на изменение в нижнем регистре, которое вызывает vba в моем коде - это свидетельствует о проблеме? - Зефир Мэйс 54 минуты назад

Обычно это происходит, когда вы объявляете переменную с тем же именем

Из чата : File Post Mortem подтвердил мое подозрение. Была объявлена ​​переменная с тем же именем.

Public Sub update(ByVal value As Long, _
                  Optional ByVal MaxValue As Long = 0, _
                  Optional ByVal Status As String = "", _
                  Optional ByVal DisplayPercent As Boolean = True)

Также Multipage был поврежден. Замена элемента управления решила проблему.

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