Excel中的VBA脚本 - 根据判断条件批量修改表名,并给指定单元格赋值,最后创建带有超链接的目录
现在我有一个需求,需要把表1名字改为D1,表2改为D1Result,表3改为D2,表4改为D2Result,以此类推,在此基础上对每一个非Result表格的E4单元格赋值,值是当前表的表名。因为表格太多了,不想一个一个手动改,想由VB脚本实现,那么我该怎么写呢?经过一番百度和研究,最终写出来的脚本如下(本地环境可以运行)
Sub Run()
For i = 1 To Worksheets.CountIf i Mod 2 = 0 Then
Sheets(i).Name = "D" & i / 2 & "Result"
Else
Sheets(i).Name = "D" & (i + 1) / 2
Sheets(i).Cells(4, 5) = Sheets(i).Name
End If
Next
End Sub
上图最终效果会把表名依次改为:D1,D1Result,D2,D2Result...以此类推
并且对每个D1,D2表(即非Result表)的E4单元格赋值,值为当前表的表名
那么表格太多,如果我要在第一页添加一个带有超链接的目录怎么办呢?那么就可以在最前面新建一个新的表格,然后用如下脚本生成对后面所有表格的超链接 (注意因为我的目录是添加到第一页的,所以后面的所有表格的页码都被加一了,因此对i的判断做了修改)
Sub Run1()
For i = 2 To Worksheets.Count
If i Mod 2 = 0 Then
Sheets(1).Cells(i / 2, 1) = Sheets(i).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i / 2, 1), Address:="", SubAddress:=Sheets(i).Name & "!A1", ScreenTip:="Forward To"
Else
Sheets(1).Cells((i - 1) / 2, 2) = Sheets(i).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells((i - 1) / 2, 2), Address:="", SubAddress:=Sheets(i).Name & "!A1", ScreenTip:="Forward To"
End If
Next
End Sub
最终效果如下图↓