VBA复制HTML组合框当前值,VBA - 获取组合框的选定值

本文介绍如何在VBA中处理Excel ActiveX组合框的更改事件。通过创建自定义类模块来连接事件,并利用Worksheet_Change事件处理数据验证列表的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果您正在处理数据验证列表,则可以使用Worksheet_Change事件。右键单击包含数据验证的工作表,然后选择查看代码。然后在此类型:

Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Value

End Sub

如果你正在处理的ActiveX组合框,这是一个更复杂一点。您需要创建一个自定义类模块来连接事件。首先,创建一个名为CComboEvent的类模块并将其放入其中。

Public WithEvents Cbx As MSForms.ComboBox

Private Sub Cbx_Change()

MsgBox Cbx.Value

End Sub

接下来,创建另一个名为CComboEvents的类模块。这将保存我们所有的CComboEvent实例并将其保留在范围内。把这段代码放在CComboEvents中。

Private mcolComboEvents As Collection

Private Sub Class_Initialize()

Set mcolComboEvents = New Collection

End Sub

Private Sub Class_Terminate()

Set mcolComboEvents = Nothing

End Sub

Public Sub Add(clsComboEvent As CComboEvent)

mcolComboEvents.Add clsComboEvent, clsComboEvent.Cbx.Name

End Sub

最后,创建一个标准模块(未类模块)。您需要使用代码将所有组合框放入类模块中。您可以将它放在Auto_Open过程中,以便在打开工作簿时发生,但这取决于您。

您需要一个Public变量来存放CComboEvents的一个实例。将其公开化,它的所有孩子都会在范围内。你需要它们的范围,以便触发事件。在该过程中,遍历所有组合框,为每个组合框创建一个新的CComboEvent实例,并将其添加到CComboEvents。

Public gclsComboEvents As CComboEvents

Public Sub AddCombox()

Dim oleo As OLEObject

Dim clsComboEvent As CComboEvent

Set gclsComboEvents = New CComboEvents

For Each oleo In Sheet1.OLEObjects

If TypeName(oleo.Object) = "ComboBox" Then

Set clsComboEvent = New CComboEvent

Set clsComboEvent.Cbx = oleo.Object

gclsComboEvents.Add clsComboEvent

End If

Next oleo

End Sub

现在,每当一个组合框改变时,事件将触发,在这个例子中,一个消息框将显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值