VBA-Dropown导航到工作表/工作簿 Private子组合框1_Change() 如果ComboBox1.ListIndex>-1,则为工作表(ComboBox1.Text)。选择 端接头 专用子组合框1\u DropButtonClick() 将xSheet设置为工作表 出错时继续下一步 Application.ScreenUpdating=False Application.EnableEvents=False 如果ComboBox1.ListCount ThisWorkbook.Sheets.Count,则 组合框1.清除 对于此工作簿中的每个xSheet.Sheets ComboBox1.AddItem xSheet.Name 下一页 如果结束 Application.EnableEvents=True Application.ScreenUpdating=True 端接头

VBA-Dropown导航到工作表/工作簿 Private子组合框1_Change() 如果ComboBox1.ListIndex>-1,则为工作表(ComboBox1.Text)。选择 端接头 专用子组合框1\u DropButtonClick() 将xSheet设置为工作表 出错时继续下一步 Application.ScreenUpdating=False Application.EnableEvents=False 如果ComboBox1.ListCount ThisWorkbook.Sheets.Count,则 组合框1.清除 对于此工作簿中的每个xSheet.Sheets ComboBox1.AddItem xSheet.Name 下一页 如果结束 Application.EnableEvents=True Application.ScreenUpdating=True 端接头,vba,excel,Vba,Excel,这就是我目前所拥有的。目前,它显示了我所有的工作簿/工作表,因为我只希望它显示10个特定的工作表。基于此评论: “其他的是A部分、B部分和D部分。我不想把它们放进去 下拉列表“ 这会奏效的 Private Sub ComboBox1_Change() If ComboBox1.ListIndex > -1 Then Sheets(ComboBox1.Text).Select End Sub Private Sub ComboBox1_DropButtonClick() Dim

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

基于此评论:


“其他的是A部分、B部分和D部分。我不想把它们放进去 下拉列表“

这会奏效的

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
您可以轻松修改Select Case语句以创建更多条件

您还可以执行以下更复杂的操作,以进行更多模式匹配:

    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 Instr(xSheet.Name, "(")
    Case Is > 0: ComboBox1.AddItem xSheet.Name
End Select
Private子组合框1_Change()
如果ComboBox1.ListIndex>-1,则为工作表(ComboBox1.Text)。选择
端接头
专用子组合框1\u DropButtonClick()
将xSheet设置为工作表
出错时继续下一步
Application.ScreenUpdating=False
Application.EnableEvents=False
如果ComboBox1.ListCount ThisWorkbook.Sheets.Count,则
组合框1.清除
对于此工作簿中的每个xSheet.Sheets
如果xSheet.Name类似于“Part C(*),那么ComboBox1.AddItem xSheet.Name
下一页
如果结束
Application.EnableEvents=True
Application.ScreenUpdating=True
端接头
开关上的特定图纸名称:(OP要求)

Private子组合框1\u DropButtonClick()
将xSheet设置为工作表
出错时继续下一步
Application.ScreenUpdating=False
Application.EnableEvents=False
如果ComboBox1.ListCount ThisWorkbook.Sheets.Count,则
组合框1.清除
对于此工作簿中的每个xSheet.Sheets
选择Case xSheet.Name
案件“C(B)部”、“C(D)部”、“C(E)部”、“C(F)部”、“C(G)部”_
“C(H)部”、“C(J)部”、“C(K)部”、“C(L)部”、“C(K)部”
ComboBox1.AddItem xSheet.Name
结束选择
下一页
如果结束
Application.EnableEvents=True
Application.ScreenUpdating=True
端接头

您可以添加或删除图纸名称,如果您决定断开该行,请不要忘记使用“u”符号来断开该行。(非常常见的错误)

我们不知道您的工作簿是如何设置的,因此除了手动添加10张之外,我们无法提供任何解决方案。如果您想提供更多关于10张工作表命名的上下文,或者以其他方式将其与其他工作表区分开来,那么您将得到更可靠的答案。例如,Hi@Sorceri,它们是C部分的名称(B) ,C部分(D),C部分(E)…C部分(M)我不介意手动添加它们,除非我知道如何添加其他表格是A部分、B部分和D部分。我不希望它们出现在下拉列表中,因为您要添加的所有表格都有A(在它们中,您不想添加的所有表格都没有A)(其中,正确?..`ComboBox1.AddItem ThisWorkbook.Sheets(“Part C(B)”)`谢谢,尽管它没有显示“Part A”。Part B和D仍然是showing@RealHelper-查看我编辑的答案,然后重试。我忘了“”对
案例中的多个语句不起作用
谢谢!您有包含工作表特定名称的解决方案吗?我已经编辑了答案以包含特定工作表名称。您能告诉我如何为组合框设置默认值吗?
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
            If xSheet.Name Like "Part C (*" Then ComboBox1.AddItem xSheet.Name
        Next xSheet
    End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
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
            Select Case xSheet.Name
                Case "Part C (B)", "Part C (D)", "Part C (E)", "Part C (F)", "Part C (G)", _
                    "Part C (H)", "Part C (J)", "Part C (K)", "Part C (L)", "Part C (K)"
                    ComboBox1.AddItem xSheet.Name
            End Select
        Next xSheet
    End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub