Excel VBA:将每个工作表名称更改为每个工作表中的单元格A1值

问题描述

我有一个代码,能够将活动工作表(在本例中为工作表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事实速览:您不能将工作表称为“历史记录” ...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...