Excel使用“下拉菜单”来快速切换工作表,一个值得收藏的小技巧!

首先我们先来将下拉菜单制作完成。
假设我们的下拉菜单列建立在C列。我们选中C2:C4单元格数据区域,点击“数据”选项卡下面的“数据工具”功能区中的“数据验证”(数据有效性)功能,在弹出的“数据验证”的对话框中,我们将“允许”设置为“序列”,在“来源”处输入我们的下拉列表要显示的选项“1月,2月,3月”(中间用英文状态下的逗号隔开即可)
最后点击“确定”退出即可。我们看到,下拉列表就制作完成了。但是此时的下拉列表没有链接切换的功效。

上面创建下拉列表的方法,是在工作表数量少的情况下比较常见的创建方法。如果我们的工作表数量有成百上千个,我们就需要在“数据验证”对话框中的“来源”框内输入很长很长的内容,这就效率非常的低了。
所有为了解决这个问题,我们可以在工作表数量很多的情况下通过使用VBA代码来快速的提取一下所有的工作表名称,以列的方式存放在A列。
我们右击工作表“Excel情报局”名称标签,点击“查看代码”命令,在弹出的VBA代码编辑界面将下面的一段代码复制粘贴进去,然后点击上方的“运行”按钮。
Sub a()
For Each sh In Sheets
k = k + 1
Cells(k, 1) = sh.Name
Next
End Sub
当我们关闭VBA代码窗口回到Excel界面的时候,发现所有的工作表名称就放到了工作表“Excel情报局”中的A列了。

同样的道理:
假设我们的下拉菜单列建立在C列。我们选中C2:C4单元格数据区域,点击“数据”选项卡下面的“数据工具”功能区中的“数据验证”(数据有效性)功能,在弹出的“数据验证”的对话框中,我们将“允许”设置为“序列”,在“来源”处我们直接用鼠标选中A2:A4单元格区域,即可快速引用所有的工作表名称数据。最后点击“确定”退出即可。我们看到,下拉列表就制作完成了。同样此时的下拉列表没有链接切换工作表的功效。
只是使用这种方法解决了我们在工作表数据量极大的情况下,需要输入很长的列表选项名称的困扰。

下面我们来解决如何通过选择不同的下拉菜单名称,切换到不同工作表中的效果。
我们继续通过右击工作表“Excel情报局”名称标签,点击“查看代码”命令,在弹出的VBA代码编辑界面将之前的那段代码删除,将下面的一段代码复制粘贴进去,不需要点击运行,直接关闭退出VBA界面即可。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim LastRow As Integer
If Target.Column = 3 And Target.Row > 1 Then
Sheets(Target.Value).Activate
LastRow = ActiveSheet.[a65536].End(xlUp).Row
ActiveSheet.Range("A" & LastRow + 1).Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

最终我们观察发现,我们在C列的下拉菜单中通过选择改变“1月”、“2月”或者“3月”,会自动切换链接到对应名称的工作表中了。

注意:
代码中的数字“3”,是我们数据验证下拉菜单所在的列号,因为我们本例中创建在了C列,所以此处为数字“3”,这里需要我们根据实际情况来进行修改。


