代码之家  ›  专栏  ›  技术社区  ›  kyokley

Excel VBA-更新组合框时暂停事件

  •  0
  • kyokley  · 技术社区  · 15 年前

    我有一个用vba for excel编写的应用程序接受实时数据馈送。每当数据发生变化时,都会在VBA中触发各种事件。

    我还有一些带有组合框的用户窗体。我的问题是,当我单击组合框上的向下箭头并尝试进行选择时,当我从数据馈送中获得更新时,组合框将重置。我想做的是在组合框中进行选择时暂停事件,然后在完成后取消暂停。如何生成此功能?

    3 回复  |  直到 12 年前
        1
  •  1
  •   Marcand    15 年前

    也许您可以放置一个标志来绕过组合框上的更新事件,直到做出选择。

    Private bLock as boolean  ' declare at module level
    
    ' When a user clicks on the combobox
    Private Sub DropDownArrow_Click()  ' or cboComboBox_Click()
        bLocked = True
    End Sub
    
    ' This procedure is the one that does the updating from the data source.
    ' If the flag is set, do not touch the comboboxes.
    Private Sub subUpdateComboBoxes()
        If Not bLocked then
            ' Update the comboboxes
        End If
    End Sub
    
    
    ' When the selection is made, or the focus changes from the combobox.
    ' check if a selection is made and reset the flag.
    Private Sub cboComboBox_AfterUpdate()  ' Or LostFucus or something else
        if Format(cboComboBox.Value) <> vbNullString Then
            bLocked = False
        End If
    End Sub
    

    希望有帮助。

        2
  •  2
  •   guitarthrower    15 年前

    尝试关闭:

    application.enableEvents=false

    打开它:

    application.enableEvents=真

        3
  •  2
  •   Cody Gray BugGuyBCS    13 年前

    暂停和显示信息,并在暂停期间继续处理某些事情。最后按按钮

    Public Ready As Boolean
    
    Private Sub Command1_Click()
    Ready = True
    End Sub
    
    Private Sub Form_Load()
    Me.Show
    Ready = False
    Call Wait
    Label1.Visible = True
    End Sub
    
    Public Function Wait()
    Do While Ready = False
        DoEvents
    Loop
    End Function
    
    推荐文章