工作表中的任何更改都会触发组合框更改事件

Combobox change event is firing for any changes in worksheet

我尝试在我的传播中加入 ComboBoxsheet 但它无法按我想要的方式工作。我遇到的问题是组合框事件(下拉)会因工作 sheet 中所做的任何更改而被触发。例如,我将组合框链接到单元格 A1,每当我更改 H9 单元格(或任何其他单元格)中的值时,都会触发组合框的下拉菜单。我只想在其链接单元格更改时触发组合框下拉框,即 A1。

Private Sub ComboBox1_Change()
'DROP-DOWN USE CATEGORY BOX ///////////////////////////////////////////////////////
Dim Use As String
Dim Ind As String
Use = Worksheets("PEC Calculator").Range("B8").Value
Ind = Worksheets("PEC Calculator").Range("B3").Value
If ComboBox1.Value <> "" Then
ComboBox1.ListFillRange = "UC_List"
Me.ComboBox1.DropDown
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
Dim tblA As ListObject
Dim nRows As Long
Dim nCols As Long

Set tblA = Worksheets("PEC Calculator").ListObjects("ATableINPUT")

If tblA.Range(2, 2).Value = "TableA1" Then
    If Range("B4").Value = "Batch" Then
    tblA.Range(3, 2) = 0.000001
    Else
    tblA.Range(3, 2) = 0.000001
    End If
End if
Application.EnableEvents = True
End Sub

有什么办法可以解决这个问题吗?有什么想法吗?

每次 .Value 属性 更改时都会触发 ComboBox.Change 事件。您设置为 A1.LinkedCell 属性 导致这些事件在每次 sheet 更改时触发,因为 A1 包含一个公式。

  • Excel 中的某些公式要求在每次 sheet 更改时重新计算。
  • 即使新值与旧值相同,也会触发ComboBox.Change事件

要解决此问题,我建议声明一个 Module-Level 变量并使用它来保存 ComboBox 的值。模块级变量在执行之间保留其值。这样您就可以在每个事件期间比较旧值和新值,并且仅在值发生变化时执行您的操作。

Dim CB_Val As Variant
Private Sub ComboBox1_Change()
    If Me.ComboBox1.Value <> CB_Val Then
        CB_Val = Me.ComboBox1.Value
        'DROP-DOWN USE CATEGORY BOX ///////////////
        Dim Use As String
        Dim Ind As String
        Use = Worksheets("PEC Calculator").Range("B8").Value
        Ind = Worksheets("PEC Calculator").Range("B3").Value
        If ComboBox1.Value <> "" Then
            ComboBox1.ListFillRange = "UC_List"
            Me.ComboBox1.DropDown
        End If
    End If
End Sub