关闭子窗体时,Excel VBA窗体无法正确刷新

时间:2013-03-22 18:52:26

标签: forms excel vba .refresh

下午好。我遇到了一个情况,我希望有人可以帮忙。我在Windows XP上运行Office 2010,并且有一个Excel工作表,其中包含一个显示模式窗体的按钮(Form01)。 Form01包含3个数据列表框。双击listbox2中的项目将打开另一个模式窗体(Form02),以便可以修改该项目。卸载Form02将保存数据并调用几个宏来调整主机工作表上的命名范围。此代码存储在模块中,而不是表单上。

这是问题发生的地方。卸载Form02并且Form01可访问时,我无法选择listbox1或listbox3中的任何内容或Form01上的按钮。我必须首先在listbox2中选择一些东西,然后我可以访问表单上的其他控件。我试过.SetFocus在其他控件上并在Form02.Show 1语句之后添加DoEvents而没有运气。我发现的唯一解决方法是隐藏和重新显示Form01,导致屏幕闪烁。 Application.ScreenUpdating = False并返回True似乎也没有帮助。我真的需要弄清楚当Form02显示然后关闭时,其他控件无法访问。是否有其他人遇到过此行为或可能有建议?

1 个答案:

答案 0 :(得分:0)

更改此

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