ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何在A列设置所有工作表名的下拉菜单?

如何在A列设置所有工作表名的下拉菜单?

作者:绿色风 分类: 时间:2022-08-17 浏览:97
楼主
gvntw
Q:如何在A列设置所有工作表名的下拉菜单?
A:代码如下:

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim strList As String
  3.     Dim wantRange As Range
  4.     Dim Sh As Worksheet
  5.    
  6.     Set wantRange = Application.Intersect(Target, Range("A:A"))  '取选定的单元格与第1列的交集
  7.     If wantRange Is Nothing Then Exit Sub
  8.    
  9.     For Each Sh In ThisWorkbook.Worksheets  '循环工作表
  10.         strList = strList & "," & Sh.Name   '连接工作表名
  11.     Next
  12.    
  13.     With wantRange.Validation  '设置交集的数据有效性
  14.         .Delete
  15.         .Add xlValidateList, , , Mid(strList, 2)
  16.     End With
  17. End Sub

有效性工作表名.zip
2楼
水星钓鱼
练习下用字典做做
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim ShtCount As Long
  3. Dim Obj As Object
  4. If Not Application.Intersect(Target, Range("A:a")) Is Nothing Then
  5.     Set Obj = CreateObject("scripting.dictionary")
  6.         For ShtCount = 1 To Sheets.Count
  7.             Obj.Add Sheets(ShtCount).Name, ""
  8.         Next
  9.     With Target.Validation
  10.         .Delete
  11.         .Add Type:=xlValidateList, Formula1:=Join(Obj.Keys, ",")
  12.     End With
  13. End If
  14. End Sub
3楼
ansky_hx
怎么实现选择后直接跳转的功能呢~~~~?
4楼
淡定的窗帘
我复制了代码到某个工作表的VB中,可是怎么执行不了呢?怎么执行呢?要修改工作表名称至指定的名称吗?
5楼
淡定的窗帘
噢,可以了!谢谢!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap