组合框事件未触发
Combobox event not firing
我有一个组合框(下拉列表),其中填充了工作簿中所有 sheet 的名称。当我 select 其中之一时,它会激活 selected sheet.
在我将它复制到另一个工作簿并进行一些更改之前,它一直有效。
这是我用来填充组合框的代码(仍然有效):
Sub fillAllCombos()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Name <> PVTSHEET Then Call fillCombobox(ws.Name)
Next
End Sub
Sub fillCombobox(wsName As String)
Dim ws As Worksheet
Dim oCmbBox As Object
Set oCmbBox = ThisWorkbook.Sheets(wsName).Shapes("cmbSheet")
oCmbBox.ControlFormat.RemoveAllItems
For Each ws In ThisWorkbook.Sheets
oCmbBox.ControlFormat.AddItem ws.Name
Next
End Sub
以下是我捕获事件的方式:
Sub CmbSheet_Change()
Dim oCmbBox As Object
Set oCmbBox = ActiveSheet.Shapes("cmbSheet")
With oCmbBox.ControlFormat
If .Value <> "" Then
ActiveWorkbook.Sheets(.Value).Activate
.ListIndex = 0
End If
End With
End Sub
事件捕获宏位于 sheet 组合框所在的位置。
在寻找答案的过程中,我也尝试过CmbSheet_Click()
但结果相同。
我已将组合框命名为图片中的名称:
**编辑:Application.EnableEvents = True
看起来您有一个 Form Control
组合框。您可以将任何 parameter-less public sub 分配给它,但您必须手动执行此分配。只需 right-click 控件和 select“分配宏...”。
ActiveX Control
是不同的,其中分配是通过其名称完成的。
我有一个组合框(下拉列表),其中填充了工作簿中所有 sheet 的名称。当我 select 其中之一时,它会激活 selected sheet.
在我将它复制到另一个工作簿并进行一些更改之前,它一直有效。
这是我用来填充组合框的代码(仍然有效):
Sub fillAllCombos()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Name <> PVTSHEET Then Call fillCombobox(ws.Name)
Next
End Sub
Sub fillCombobox(wsName As String)
Dim ws As Worksheet
Dim oCmbBox As Object
Set oCmbBox = ThisWorkbook.Sheets(wsName).Shapes("cmbSheet")
oCmbBox.ControlFormat.RemoveAllItems
For Each ws In ThisWorkbook.Sheets
oCmbBox.ControlFormat.AddItem ws.Name
Next
End Sub
以下是我捕获事件的方式:
Sub CmbSheet_Change()
Dim oCmbBox As Object
Set oCmbBox = ActiveSheet.Shapes("cmbSheet")
With oCmbBox.ControlFormat
If .Value <> "" Then
ActiveWorkbook.Sheets(.Value).Activate
.ListIndex = 0
End If
End With
End Sub
事件捕获宏位于 sheet 组合框所在的位置。
在寻找答案的过程中,我也尝试过CmbSheet_Click()
但结果相同。
我已将组合框命名为图片中的名称:
**编辑:Application.EnableEvents = True
看起来您有一个 Form Control
组合框。您可以将任何 parameter-less public sub 分配给它,但您必须手动执行此分配。只需 right-click 控件和 select“分配宏...”。
ActiveX Control
是不同的,其中分配是通过其名称完成的。