excel - 通过下拉列表切换工作表
问题描述
我对 VBA 很陌生,并且正在尝试创建一种通过主“索引”页面上的下拉列表在工作簿中导航工作表的方法。由于工作簿中有多个工作表,并且多人使用,我希望下拉列表自动填充,以节省需要搜索列表。然后,我希望打开选定的工作表(可能使用宏按钮,或者如果可以的话,甚至可以按 Enter 键)。
到目前为止,我有以下填充下拉列表的宏(取自另一个站点):
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
这非常适合我的下拉列表的内容,以及它的自动填充功能;但我正在努力包含实际进入所选工作表的最终操作。有关信息,我使用了 ComboBox (ActivX Control)。我在想这可能是创建一个宏按钮并引用下拉选择中的文本的情况?
任何帮助或建议将不胜感激。
解决方案
您可以使用组合框中的值来像这样切换选项卡。一旦我按下按钮,Sheet1 就会变为活动状态,而不是 Sheet2
这是您自己复制/粘贴和测试的代码:
Private Sub CommandButton1_Click()
Dim mySheet As Worksheet
For Each mySheet In ActiveWorkbook.Worksheets
If mySheet.Name = ComboBox1 Then
mySheet.Select
Exit For
End If
Next mySheet
End Sub
本质上,这将遍历所有工作表以查找组合框中的任何内容。如果有匹配,则选择它。
推荐阅读
- c# - IEqualityComparer 以精度比较小数或双精度
- iis - 直接从 IIS 导出从 SSL 证书创建 PFX 文件和从 MMC 导出创建 PFX 文件有什么区别
- pandas - 如何在 Pandas 中分组和删除最后 2 行
- reactjs - 为什么我使用 React 和 Postman 发布的回复不同
- c++ - 如果文件不存在,如何打开文件或创建它,并用控制台中的值填充它
- flutter - 在@platform 上,登录后显示@sign 信息的最简单方法是什么?
- php - php exec() 函数不工作且不回显任何内容
- c++ - 将 cout 切换回写入屏幕
- python - 如何分发列表?
- javascript - 在 React 中测试 DOM 更新