发布网友 发布时间:2022-04-21 21:16
共5个回答
热心网友 时间:2023-07-09 01:58
点击"Alt+F8","创建"将下面两段代码粘贴到窗口,再在工具栏中,自定义一个按钮,为该按钮"指定宏"为"Public Sub 返回目录()"宏就可以了
Public Sub 返回目录()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
On Error GoTo ErrorHandler ' 打开错误处理程序。
Worksheets("目录").Activate
Worksheets("目录").Range("a1").Select
Exit Sub
ErrorHandler:
Msg = "在 " & Worksheets.Parent.Name & " 中没有目录表 !" ' 定义信息。
Msg = Msg & vbLf & "是否创建目录表 ?" ' 定义信息。
Style = vbYesNo + vbInformation + vbDefaultButton1 + vbApplicationModal ' 定义按钮。
Title = Worksheets.Parent.Name ' 定义标题。
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' 用户按下"OK"。
MyString = "Yes" ' 完成某操作。
目录
Else
MyString = "No" ' 完成某操作。
End If
End Sub
Public Sub 目录() '生成工作表目录,生成的目录工作表名称为"目录",生成前请先确认是否已有同名的工作表
Dim ColStart As Long, RowStart As Long
Dim ws As Worksheet, xlSheet As Worksheet
Dim SheetName As String, SheetExists As Boolean
Dim Msg, Style, Title, Response, MyString
SheetName = "目录"
For Each ws In Worksheets
If ws.Name = SheetName Then
SheetExists = True
Exit For
End If
Next ws
If SheetExists Then
Msg = "目录工作表已存在,是否重生成目录工作表?" ' 定义信息。
Style = vbYesNo + vbInformation + vbDefaultButton1 + vbApplicationModal ' 定义按钮。
Title = Worksheets.Parent.Name ' 定义标题。
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' 用户按下"OK"。
MyString = "Yes"
Set xlSheet = Worksheets(SheetName)
xlSheet.UsedRange.Clear
Else
MyString = "No"
Exit Sub
End If
Else
Set xlSheet = Worksheets.Add(Before:=Worksheets(1), Count:=1, Type:=xlWorksheet)
xlSheet.Name = SheetName
End If
If SheetExists Then
Else
End If
xlSheet.Move Before:=Worksheets(1)
xlSheet.Activate
xlSheet.Cells(1, 1).Value = "目录"
RowStart = 2
ColStart = 1
For Each ws In Worksheets
If ws.Name <> SheetName Then
With xlSheet
.Hyperlinks.Add Anchor:=.Cells(RowStart, ColStart), _
Address:="", _
SubAddress:="'" & ws.Name & "'" & "!A1", _
ScreenTip:=ws.Name, _
TextToDisplay:=ws.Name
RowStart = RowStart + 1
End With
End If
Next ws
End Sub
热心网友 时间:2023-07-09 01:58
打开Excel 2007,右击第一张工作表标签选择“重命名”,把它重命名为“目录”工作表。选中B1单元格,切换到“公式”选项卡,单击“定义名称”,在弹出的“新建名称”窗口中输入名称 List,在引用位置中则输入=INDEX(GET.WORKBOOK(1),$A1)&T(NOW()),单击确定即可定义出一个名为 List 的名称。
公式中GET.WORKBOOK(1)用于提取当前工作簿中所有工作表名称,INDEX函数则按A1中的数字决定要显示第几张工作表的名称。此外,由于宏表函数GET.WORKBOOK(1)在数据变动时不会自动重算,而NOW()是易失性函数任何变动都会强制计算,因此我们需要在公式中加上NOW()函数才能让公式自动重算。函数T()则是将NOW()产生的数值转为空文本以免影响原公式结果。 注:宏表函数GET.WORKBOOK,不能直接在单元格公式中使用,必须通过定义名称才能起作用。
切换到“开始”选项卡适当设置一下目录中的字体、字号和颜色等等,建议把字号放大并设置加粗以便查看,还要调整一下A:B列的列宽以便完全显示工作表名称。最后单击“Office”按钮,选择“另存为”,在弹出的另存为窗口中选择保存类型为“Excel启用宏的模板(*.xltm)”格式。
由于宏表函数GET.WORKBOOK(1)是通过宏功能起作用的,所以插入了工作表目录的文档最后都必须以“Excel启用宏的工作簿(*.xlsm)”格式另存,这样下次打开时才能正常显示工作表目录。此外,打开工作簿时,Excel 2007默认会禁用宏,得单击警告栏中的“选项”按钮,选中“启用此内容”单选项,确定后才能显示工作表目录。
Excel 2003 则以xls 格式保存即可。同样,在使用上述所讲的功能之前,需将宏的安全级别设为“中”或“低”:工具 – 宏 – 安全性。
热心网友 时间:2023-07-09 01:59
啥函数?看不懂。用超链接又简单又方便。
先将所有工作表重命名。然后插和一空白工作表。在A2单元格单击,按Ctrl+Kd在打开的对话框中选择“本文档中的位置”,后面的步骤一看就会,不再赘述。
热心网友 时间:2023-07-09 01:59
那个公式我也看不懂,我推荐用超链接,如:
在目录页输入sheet1,右键/超链接/文档中的位置,在引用单元格输入sheet1!a1,确定
热心网友 时间:2023-07-09 02:00
=IF(ISERROR(INDIRECT("'"&$A2&"'!"&CELL("contents",C$1)))=TRUE,"",INDIRECT("'"&$A2&"'!"&CELL("contents",C$1)))
当INDIRECT("'"&$A2&"'!"&CELL("contents",C$1))是错误值就返回空,不是错误值就返回指定工作表中指定单元格的值,比如你在A2输入一个工作表名,C1输入单元格引用如:B2那这公式返回的就是你A2输入的工作表的B2单元格的值.
注:C1输入的必须是单元格引用,如D5,E6,F8等,否则,INDIRECT("'"&$A2&"'!"&CELL("contents",C$1))就是错误值,公式返回的就是空)
公式可以这样=IF(ISERROR(INDIRECT("'"&$A2&"'!"&CELL("contents",C$1))),"",INDIRECT("'"&$A2&"'!"&CELL("contents",C$1)))或=IF(ISERROR(INDIRECT("'"&$A3&"'!"&C$1)),"",INDIRECT("'"&$A3&"'!"&C$1))