Форма Excel VBA не обновляется должным образом, когда подчиненная форма закрыта

Добрый день. Я столкнулся с ситуацией, я надеюсь, что кто-то здесь может помочь с. Я использую Office 2010 в Windows XP и у меня есть лист Excel, который содержит кнопку для отображения модальной формы (Form01). Form01 содержит 3 списка данных. Двойной щелчок по элементу в listbox2 откроет другую модальную форму (Form02), чтобы элемент мог быть изменен. Выгрузка Form02 сохранит данные и вызовет несколько макросов для настройки именованного диапазона на рабочем листе хоста. Этот код хранится в модуле, а не в форме.

Это где проблема возникает. Когда Form02 выгружена и Form01 доступна, я не могу ничего выбрать в listbox1 или listbox3 или кнопках на Form01. Я должен сначала выбрать что-то в listbox2, затем у меня есть доступ к другим элементам управления в форме. Я попытался.SetFocus на других элементах управления и добавить DoEvents после оператора Form02.Show 1, но безуспешно. Единственный обходной путь, который я нашел, - это скрыть и заново отобразить Form01, что вызывает мерцание экрана. Application.ScreenUpdating = False и возврат к True также, похоже, не помогают. Мне действительно нужно выяснить, какие другие элементы управления недоступны, когда форма 02 отображается, а затем закрывается. Кто-нибудь еще сталкивался с таким поведением или может быть предложение?

1 ответ

Изменить это

Private Sub lstSiteMaster_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If lstSiteMaster.ListCount = 0 Then Exit Sub
    LoadFrmEditDataset Me.Controls("lstSiteMaster"), "SITE MASTER"
    frmEditDataset.Show 1
    Unload frmEditDataset
    DoEvents
    Me.lstSiteMaster.ListIndex = -1
    Me.lstSiteList.ListIndex = -1
    Me.lstMiniPOR.ListIndex = -1
    '''BounceTheForm
End Sub

в

Private Sub lstSiteMaster_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If lstSiteMaster.ListCount = 0 Then Exit Sub
    LoadFrmEditDataset Me.Controls("lstSiteMaster"), "SITE MASTER"
    frmEditDataset.Show 1
    DoEvents
    Me.lstSiteMaster.ListIndex = -1
    Me.lstSiteList.ListIndex = -1
    Me.lstMiniPOR.ListIndex = -1
    '''BounceTheForm
End Sub

А ТАКЖЕ

этот

Private Sub cmdApply_Click()
    With Me
        UpdateDataset .lblDataset, .lblECR, .lblFA, .lblFieldId, .txtFieldValue, .cboAction, .lblIndex + 2
    End With

    Me.Hide
End Sub

в

Private Sub cmdApply_Click()
    With Me
        UpdateDataset .lblDataset, .lblECR, .lblFA, .lblFieldId, .txtFieldValue, .cboAction, .lblIndex + 2
    End With

    Unload Me
End Sub
Другие вопросы по тегам