我想在组合框值改变时得到ComboBox的旧值。
我尝试过类似的事情:
Private Sub ComboBox1_Change()
Application.EnableEvents = False
newVal = ComboBox1.Value
Application.Undo
oldVal = ComboBox1.Valu
End Sub
或
Private Sub ComboBox1_Change()
Application.EnableEvents = False
newVal = ComboBox1.Value
ComboBox1.Undo
oldVal = ComboBox1.Valu
End Sub
但似乎没有用......
由于
答案 0 :(得分:4)
您可以使用Static variable在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
如果您需要在Change事件之外访问OldValue,请使用模块级变量,如@Ifrandom所述。
答案 1 :(得分:2)
我使用excel组合框很多,并开发了许多有用的功能,如: * save&从注册表或隐藏的“APP_DATA”工作表加载组合框数据 *通过输入新值并按下来添加新的永久组合框项目 *允许通过双击框来编辑组合历史记录 *通过删除任何当前显示的项目并按
清除所有组合历史记录这些只是让你前进的一些想法,代码相当简单,我只是写了一些简单的潜艇: *从历史字符串加载组合框 *重复删除分隔的字符串 *捕获“新项目”或“擦除项目”功能的事件 *捕获“编辑项目”功能的事件
添加新项目时,我只需将其附加到历史记录字符串,然后重复删除它以防万一。在初始化和终止时,或者在更改历史字符串时,会从注册表中保存或加载历史字符串,并且初始化也会填充组合。 我总是认为有一个简单的方法可以做到这一点,因为我看到很多组合框保持历史(我限制为最新的24项),但我从来没有找到任何代码,所以我只是自己做了。 在某些应用中,即使双击工作表单元格值也可以填充或CSV附加到组合框,或者命令按钮可以提示并将一系列单元格加载到CSV列表中,这非常有用。
答案 2 :(得分:1)
这是一项工作,但我过去所做的是创建一个包含值的私有变量。
基本上在更改事件中,您可以执行旧值所需的操作,然后将旧值变量更新为新值。
Private oldValueComboBox as String
Private Sub ComboBox1_Change()
' Do whatever you need to do with the old value, in this case msgbox
msgbox oldValueComboBox
' Set the old value variable to the new value
oldValueComboBox = ComboBox1
End Sub
您还可以使用静态变量作为另一个帖子提及。如果使用静态变量,它只能在组合框更改的范围内使用,如果使用私有变量,则整个表单都可以看到它。