首页 > 解决方案 > VBA-下拉导航到工作表/工作簿

问题描述

Private Sub ComboBox1_Change()
  If ComboBox1.ListIndex > -1 Then Sheets(ComboBox1.Text).Select
End Sub
Private Sub ComboBox1_DropButtonClick()
    Dim xSheet As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If ComboBox1.ListCount <> ThisWorkbook.Sheets.Count Then
        ComboBox1.Clear
        For Each xSheet In ThisWorkbook.Sheets
            ComboBox1.AddItem xSheet.Name
        Next xSheet
    End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

这就是我到目前为止所拥有的。目前它显示了我所有的工作簿/工作表,因为我只希望它显示 10 个特定工作表。

标签: vbaexcel

解决方案


基于此评论:

“其他工作表是 A 部分、B 部分和 D 部分。我不希望它们出现在下拉列表中”

这将起作用

    For Each xSheet In ThisWorkbook.Sheets
        Select Case xSheet.Name
            Case Is = "Part A", "Part B", "Part D"
            Case Else
                ComboBox1.AddItem xSheet.Name
        End Select
    Next xSheet

您可以轻松修改 Select Case 语句以创建更多条件。

你也可以做一些更复杂的事情,比如下面的更多模式匹配:

Select Case Instr(xSheet.Name, "(")
    Case Is > 0: ComboBox1.AddItem xSheet.Name
End Select

推荐阅读