组合框值更改

时间:2018-11-22 04:29:19

标签: excel vba excel-vba

Private Sub Workbook_open()
    With Sheet1.ComboBox1
        .AddItem "Soccer"
        .AddItem "Tennis"
    End With
End Sub

我想做一个if声明,以便如果ComboBox1值从无更改为Soccer / tennis,或从一项更改为另一项 然后 Range("A1").Value = "This learner Plays Sport"

问题是我不知道该怎么做,组合框值会从无更改为足球/网球,或从一项更改为另一项

我尝试过workbook.change,它在关闭整个程序时给我一个错误。

1 个答案:

答案 0 :(得分:0)

尝试像这样的ComboBox更改事件代替工作簿更改事件:

Private Sub ComboBox1_Change()
    If Sheet1.ComboBox1.Value = "Soccer" Or Sheet1.ComboBox1.Value = "Tennis" Then
        Worksheets("Sheet1").Range("A1").Value = "This learner Plays Sport"
    End If
End Sub

要进入此更改事件,只需双击工作表中的组合框,它将为您打开VBA编辑器。

这仅告诉您新选择的值是什么。如果您需要知道更改之前的内容,将会更加复杂。您需要创建一个变量来存储/跟踪更改后要与之进行比较的值。


如果您的运动清单很长,建议您使用Select Case而不是if语句。例如:

Private Sub ComboBox1_Change()
    Select Case Sheet1.ComboBox1.Value
        Case "Soccer", "Tennis"
            Worksheets("Sheet1").Range("A1").Value = "This learner Plays Sports"
        Case "Lacross"
            Worksheets("Sheet1").Range("A1").Value = "Something Different"
        Case Else
            Debug.Print "value not in list"
    End Select
End Sub