excel宏实现工作表索引,点击按钮隐藏/显示对应工作表

1 篇文章 0 订阅

excel宏实现工作表索引,点击按钮隐藏/显示对应工作表

当单个excel工作簿有很多工作表时,使用起来会有麻烦,虽然excel提供隐藏工作表功能,但点击及查找并不方便。如果能够在一个工作表中实现目录索引功能,点击按钮即可隐藏/显示对应工作表,会非常方便操作和查看。
大量工作表
包含按钮的索引页面

一、编写宏

1编写一个点击按钮显示/隐藏工作表的按钮宏

Sub click()
For x = 1 To Sheets.Count
If Sheets(x).name = ActiveSheet.Buttons(Application.Caller).Caption Then
If Sheets(x).Visible = 0 Then
Sheets(x).Visible = -1'设置显示
Else
Sheets(x).Visible = 0'设置隐藏
End If
End If
Next x
End Sub

2编写一个隐藏除了索引外全部工作表的点击宏

Sub 隐藏()
For x = 1 To Sheets.Count
If Sheets(x).name <> "炼金配方索引"  Then
   Sheets(x).Visible = 0
End If
Next x
End Sub

3编写一个新建与按钮同名的工作表的宏

Sub 新建配方z()
Dim name As String
Dim bool As Integer
bool = 0
name = ActiveSheet.Buttons(Application.Caller).Caption
If Sheet10.Visible = 0 Then
Sheet10.Visible = -1
bool = 1
End If
Sheet10.Copy after:=Worksheets(Worksheets.Count)      '永远将新表加入到最后一个工作表之后
ActiveSheet.name = name           '新的工作表为当前活动的工作,将工作表的名称更改为神山表中对应单元格的名字。
If bool = 1 Then
Sheet10.Visible = 0
End If
MsgBox "该配方不存在,已为您创建新的样本!"
End Sub

注意:由于复制一个新的工作表的显示状态与原工作表相同,故需要先显示原来的工作表,再隐藏

4编写一个新建配方的按钮宏

Sub 新建配方()
Dim name As String
Dim bool As Integer
bool = 0
name = InputBox("配方名称:")
If name <> "" Then '防止点击了取消按钮对话框后出现空按钮的情况
Dim isExists As Boolean, s As Worksheet
isExists = False   '检测是否已经同名工作表,防止无法生成工作表的情况
     For Each s In ThisWorkbook.Sheets
        If s.name = name Then
              isExists = True
        End If
     Next s
If isExists = False Then
Set shp = ActiveSheet.Buttons.Add(Rnd * (400 - 30 + 1) + 30, Rnd * (200 - 30 + 1) + 30, 100, 40)  '将新建的按钮创建在区域内的随机位置
shp.Characters.Text = name
shp.OnAction = "sheet4.main2"  '给新建的按钮链接一个宏
If Sheet10.Visible = 0 Then
Sheet10.Visible = -1
bool = 1
End If
Sheet10.Copy after:=Worksheets(Worksheets.Count)      '永远将新表加入到最后一个工作表之后
ActiveSheet.name = name           '新的工作表为当前活动的工作,将工作表的名称更改为神山表中对应单元格的名字。
If bool = 1 Then
Sheet10.Visible = 0
MsgBox "创建样本及按钮完成!"
End If
Else: MsgBox "已存在该配方!"
End If
End If
End Sub

5编写一个主宏,用于赋给索引按钮

Sub main2()
 Dim isExists As Boolean, s As Worksheet
isExists = False '假如同名工作表不存在,则引用“新建配方z”
     For Each s In ThisWorkbook.Sheets
        If s.name = ActiveSheet.Buttons(Application.Caller).Caption Then
              isExists = True
        End If
     Next s
If isExists = False Then
   Call 新建配方z
Else '假如同名工作表存在,则引用“click”
Call click
End If
End Sub

6编写第二个主宏,用于赋给新建配方这个按钮

 Sub main()
   Call 新建配方
End Sub

二、新建按钮连接到宏

1.手动创建与工作表同名的按钮,都链接到宏:sheet4.main2
2.手动创建一个名为“隐藏全部”的按钮,链接到宏:seet4.隐藏
3.手动创建一个名为“创建新工作表”的按钮,链接到宏:sheet4.main

三、使用索引功能

1.对于已有的工作表:点击与工作表同名的按钮可实现隐藏/显示
2.想要新建一个工作表:点击按钮“创建新工作表”弹出输入框,输入名称后会新建一个工作以及一个同名按钮。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值