组合框更改事件正在触发工作表中的任何更改
Posted
技术标签:
【中文标题】组合框更改事件正在触发工作表中的任何更改【英文标题】:Combobox change event is firing for any changes in worksheet 【发布时间】:2021-12-29 16:06:44 【问题描述】:我尝试在我的电子表格中添加 ComboBox,但它没有按我想要的方式工作。我遇到的问题是,在工作表中进行的任何更改都会触发组合框事件(下拉)。例如,我将组合框链接到单元格 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
有没有办法解决这个问题?有什么想法吗?
【问题讨论】:
是的。你说的对。我忘了把线放在这里。我更新了代码 您没有照原样复制事件代码吗?您是否在问题中编写了他们的代码? 我在问题中复制了我的代码。 我无法复制该问题。工作表上是否发生了任何其他可能导致此行为的事件? 不,我刚刚定义了 Combobox 并链接到 A1。 'UC_list' 是一个动态列表。 【参考方案1】:每次.Value
属性更改时都会触发ComboBox.Change 事件。您设置为A1
的.LinkedCell
属性会导致这些事件在每次工作表更改时触发,因为A1
包含一个公式。
ComboBox.Change
事件。
要解决这个问题,我建议声明一个Module-Level 变量并使用它来保存组合框的值。模块级变量在执行之间保留其值。这样您就可以在每个事件期间比较旧值和新值,并且仅在值发生更改时执行您的操作。
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
【讨论】:
太棒了!非常感谢!以上是关于组合框更改事件正在触发工作表中的任何更改的主要内容,如果未能解决你的问题,请参考以下文章
Flash/Actionscript2 - 无法触发组合框“更改”事件