组合框事件未触发

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 是不同的,其中分配是通过其名称完成的。