Excel VBA ActiveX组合框更改事件无限循环

时间:2016-10-29 16:28:36

标签: excel vba combobox

让我先说一下我是VBA的自学新手或为此事编码。

我有一个组合框" cmbStyle"不是在用户表单中而是直接在名为" Cost"的工作表上。我需要在" cmbStyle"的change事件上运行代码。我遇到的问题是,当用户更改组合框时,事件会触发并且代码会运行,但是在代码结束时,组合框事件会再次触发,依此类推。依此类推。

我知道Application.EnableEvents = False对ActiveX控件没有影响所以这不是一个解决方案。

我找到了关于如何使用布尔变量来停止列表框的更改事件中的循环的描述,但我似乎无法在我的实例中使其工作。

我的代码将在Cange Event第二次触发后结束子程序。但是,下次用户从Combobox中选择另一个值时,CodeDoneRun变量仍为TRUE,因此子程序在我需要时不会再次运行。

我觉得我在这里缺少一些非常基本的东西......

我的代码如下:

Public CodeDoneRun as Boolean

Private Sub cmbStyle_Change()
    If CodeDoneRun = True Then Exit Sub

    CodeDoneRun = True

    Call other Subroutines

End Sub

1 个答案:

答案 0 :(得分:0)

将函数调用包含在if语句中,让代码运行。

Public CodeDoneRun as Boolean

Private Sub cmbStyle_Change()
    If Not CodeDoneRun Then
         Call other Subroutines
    End If

    CodeDoneRun = Not CodeDoneRun

End Sub