我試圖在我的電子表格中使用 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
有沒有辦法解決這個問題?任何的想法?
uj5u.com熱心網友回復:
該ComboBox.Change事件觸發每次的.Value屬性更改。.LinkedCell您設定的屬性A1導致這些事件在每次作業表更改時觸發,因為A1包含一個公式。
- Excel 中的某些公式要求在每次作業表更改時重新計算。
- 即使新值與舊值相同,它仍然會觸發該
ComboBox.Change事件。
為了解決這個問題,我建議宣告一個模塊級變數并使用它來保存 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361282.html
上一篇:命名表和創建超鏈接
下一篇:復制檔案名
