问题描述
我有一个代码,能够将活动工作表(在本例中为工作表1)重命名为活动工作表的A1单元格中的值。我想编写一个函数,以便能够对Excel工作簿中的每个工作表执行此操作。其中工作表1名称将是工作表1上的单元格A1的值,工作表2名称将是工作表2上的单元格A1的值,依此类推。
是否简单地计算工作簿中的工作表数并将其添加到工作表范围(1:TotalCount)中?
Sub RenameSheet()
Worksheets(1).Select
Range("A1").Select
ActiveSheet.Name = ActiveCell.Value
End Sub
解决方法
正如BigBen所说,您需要循环遍历每张纸。最简单的方法是使用Worksheet对象的集合。最好检查单元格“ A1”中是否确实有东西,否则会出现错误。试试这个:
Option Explicit
Sub RenameSheets()
Dim ws As Worksheet
Dim strName As String
For Each ws In ActiveWorkbook.Worksheets
strName = ws.Range("A1").Value
If Len(strName) > 0 Then
ws.Name = strName
End If
Next ws
End Sub
您可能还应该检查一下该名称是否尚未被使用。 Excel不会喜欢您有两个同名工作表。 Excel事实速览:您不能将工作表称为“历史记录” ...