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“历史”...