Excel VBA:将每个 sheet 名称更改为每个 sheet 中的单元格 A1 值
Excel VBA: Change each sheet name to cell A1 value in each sheet
我有一个代码可以将活动 sheet(在本例中为 sheet 1)重命名为活动 sheet 的 A1 单元格中的值。我想编写一个函数,以便能够为 Excel 工作簿中的每个 sheet 执行此操作。其中 sheet 1 名称将是 sheet 1 上单元格 A1 的值,sheet 2 名称将是 sheet 2 上单元格 A1 的值,依此类推。
是否像计算工作簿中的 sheet 个数并将其添加到范围 Worksheets(1:TotalCount) 一样简单?
Sub RenameSheet()
Worksheets(1).Select
Range("A1").Select
ActiveSheet.Name = ActiveCell.Value
End Sub
正如 BigBen 所说,您需要一个循环来遍历每个 sheet。最简单的方法是使用 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 不会喜欢你有两个同名的 sheet。 Top Excel事实:你不能称作品sheet“历史”...
我有一个代码可以将活动 sheet(在本例中为 sheet 1)重命名为活动 sheet 的 A1 单元格中的值。我想编写一个函数,以便能够为 Excel 工作簿中的每个 sheet 执行此操作。其中 sheet 1 名称将是 sheet 1 上单元格 A1 的值,sheet 2 名称将是 sheet 2 上单元格 A1 的值,依此类推。
是否像计算工作簿中的 sheet 个数并将其添加到范围 Worksheets(1:TotalCount) 一样简单?
Sub RenameSheet()
Worksheets(1).Select
Range("A1").Select
ActiveSheet.Name = ActiveCell.Value
End Sub
正如 BigBen 所说,您需要一个循环来遍历每个 sheet。最简单的方法是使用 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 不会喜欢你有两个同名的 sheet。 Top Excel事实:你不能称作品sheet“历史”...