Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用下拉框/组合框和宏在Excel电子表格中的选项卡之间切换_Excel_Vba_Tabs_Macros_Switch Statement - Fatal编程技术网

使用下拉框/组合框和宏在Excel电子表格中的选项卡之间切换

使用下拉框/组合框和宏在Excel电子表格中的选项卡之间切换,excel,vba,tabs,macros,switch-statement,Excel,Vba,Tabs,Macros,Switch Statement,我已经为它挣扎了几个小时,我想请您提供帮助,什么是VBA代码,我应该如何实现这一点,因为我有大约30个选项卡,我想创建一个下拉列表,以简化选项卡之间的切换 见下图: 我建议使用验证列表框而不是组合框,然后将单元格命名为“wsSelect”,因为这样更简单。打开Visual Basic和包含用户选择要打开的工作表的列表的工作表,并使用代码框顶部的两个下拉框创建工作表更改子项。然后,当列表框值更改时,将运行以下代码来更改工作表: Sub Worksheet_Change(ByVal Target A

我已经为它挣扎了几个小时,我想请您提供帮助,什么是VBA代码,我应该如何实现这一点,因为我有大约30个选项卡,我想创建一个下拉列表,以简化选项卡之间的切换

见下图:


我建议使用验证列表框而不是组合框,然后将单元格命名为“wsSelect”,因为这样更简单。打开Visual Basic和包含用户选择要打开的工作表的列表的工作表,并使用代码框顶部的两个下拉框创建工作表更改子项。然后,当列表框值更改时,将运行以下代码来更改工作表:

Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("wsSelect")) Is Nothing Then
    Call Pb_Switch_Sheet
End If
端接头

您需要创建一个新模块,其中包含一个公共子模块以切换工作表(excel不喜欢在模块中为工作表引用不同的工作表)。然后,像这样一个简单的sub应该可以做到:

Public Sub Pb_Switch_Sheet()

Dim wsName As String
ws = ThisWorkbook.ActiveSheet.Range("wsSelect").Value

ThisWorkbook.Sheets(ws).Select
端接头

希望有帮助


A

尝试将工作表名称添加到A组合框:

With Sheets(1)
    For shtIndex = 2 to Application.Sheets.Count
        .Combobox1.additem Sheets(shtIndex).name
    next shtIndex
end with
在combobox1更改或单击事件下运行以下命令

Sheets(combobox1.text).select

我们都喜欢简单的事情但您需要提供更多详细信息。您还可以构建一个目录选项卡,其中包含指向所有其他选项卡的超链接,以及指向每个选项卡上ToC的超链接。