永发信息网

我用网友说的VBA已为EXCEL表格自动生成目录,现在怎样使新建的EXCEL表格自动出现在目录中

答案:2  悬赏:30  手机版
解决时间 2021-03-16 17:57
并且:怎样使EXCEL工作薄打开时只显示目录,其它工作表为隐藏,点击目录上选中的工作表时不影响打开该选中的工作表,使新建的EXCEL表格保存、关闭后自动出现在目录中,关闭后也自动隐藏,工作表名称变化时,目录上的名称也随之变化。
愿受您指点!
本人QQ:1632229377
最佳答案
假设目录工作表名称为:目录
目录工作表A1、B1单元格内容分别为:序号、名称
则对应目录工作表VBA代码为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
If Selection.Cells.Count = 1 And Selection.Hyperlinks.Count > 0 Then
str = Selection.Value
Worksheets(str).Visible = True
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End If
End Sub
整个工作簿(ThisWorkbook)代码:
Private Sub Workbook_Open()
Dim i As Integer
Dim sht As Worksheet
For i = 1 To Sheets.Count
Set sht = Sheets(i)
If sht.Name <> "目录" Then
sht.Visible = xlSheetHidden
End If
Next
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "目录" Then
Dim i, j As Integer
Dim sht As Worksheet
Dim str As String
j = Worksheets.Count
Range("A2:B65536").ClearContents
Range("A2:B65536").Hyperlinks.Delete
For i = 1 To j
str = Sheets(i).Name
If str <> "目录" Then
Cells(i, 1) = i - 1
Cells(i, 2) = str
Sh.Hyperlinks.Add Anchor:=Range("B" & i), Address:="", SubAddress:= _
str & "!A1", TextToDisplay:=str
Sheets(i).Visible = False
End If
Next
Range(Cells(1, 1), Cells(j + 1, 2)).EntireColumn.AutoFit
Cells(1, 2).Select
End If
End Sub
将以上代码放到指定位置,即可实现你的功能。
全部回答
sub test() dim i as integer for i = 30 to 1 step -1 if cells(i, 1) = "" then rows(i).delete next i end sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
360N4S能刷别的系统吗
金叔早餐在什么地方啊,我要过去处理事情
有在维京邮轮上工作过的吗,待遇怎么样,真的
台山中国人民银行征信中心上班时间
奔驰单车行蒲城店在什么地方啊,我要过去处理
重庆北到璧城区璧城街道河西工业园怎么走
商场失火 大部分服装(羊毛衫为主) 被燃烧的
宝兰奢(大望路店)这个地址在什么地方,我要处
电脑电源是什么,测试BOOM
华山论剑西凤酒石油店在什么地方啊,我要过去
留鬓角男生好看吗,为什么韩国喜欢留鬓角
清洁城市的感想
中央10套《我爱发明》百变棉花糖机
金希澈主持过哪几期的radio star
安然纳米养生馆旗舰店这个地址在什么地方,我
推荐资讯
电影情节一个中国客房服务员爱上韩国富翁女儿
7000的工资在北京算高吗?
淮扬菜文学方面的知识,诗词,故事,历史,传
纯银饰品一天就会变黑么?
汽车专业考事业编考哪些
宝坻香江健康小镇怎么样?
幺妈的儿子比我大我们是什么关系
我有一棵大叶罗汉松大约50公分多少价格
12月23日用英语怎么写
我女友姓熊该怎么喊 才好 ??
纯牛奶可以加热吗
库尔勒市朝阳农民棉花专业合作社在什么地方啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?