VBA - 获取组合框的旧值

dar*_*one 4 excel vba combobox

当组合框值发生变化时,我想获得组合框的旧值。

我尝试过类似的事情:

Private Sub ComboBox1_Change()
        Application.EnableEvents = False
        newVal = ComboBox1.Value
        Application.Undo
        oldVal = ComboBox1.Valu
End Sub
Run Code Online (Sandbox Code Playgroud)

或者

Private Sub ComboBox1_Change()
        Application.EnableEvents = False
        newVal = ComboBox1.Value
        ComboBox1.Undo
        oldVal = ComboBox1.Valu
End Sub
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用......

谢谢

Dou*_*ncy 5

您可以使用一个静态变量,该变量在对ComboBox1_Change事件的调用之间保存其值:

Private Sub ComboBox1_Change()
Static OldValue As String

With Me.ComboBox1
    Debug.Print "Value: "; .Value; " Old Value: "; OldValue
    OldValue = .Value
End With
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您需要在 Change 事件之外访问 OldValue,请使用模块级变量,如@Ifrandom 所述。