VBA Excel,基于单元格值重命名工作表

我需要根据单元格的值范围dynamic地重新命名我的所有表单。 这是我的VBA代码,每当我运行它,它总是给我一个'运行时错误'1004。

Sub RenameSheets() Dim MyCell As Range, MyRange As Range Set MyRange = Sheets("Config").Range("A5") Set MyRange = Range(MyRange, MyRange.End(xlDown)) Sheets("Sheet1").Activate For Each MyCell In MyRange ActiveSheet.Name = MyCell.Value 'Error here. it works fine if i rename MyCell.Value to "AnyRandomValue" Worksheets(ActiveSheet.Index + 1).Select Next MyCell End Sub 

我不能让我的头在附近。 为什么它在MyCell.Value上发生错误? 请帮忙!

我想这个问题是通过.Select方法激活工作表。
尽可能避免使用select 。 检查链接。
你的代码可以重写如下:

 Sub RenameSheets() Dim MyNames As Variant MyRange As Range, ws As Worksheet Dim i As Long With Sheets("Config") Set MyRange = .Range("A5", .Range("A" & _ .Rows.Count).End(xlUp).Address) '~~> pass names to array MyNames = Application.Transpose(MyRange) i = Lbound(MyNames) End With '~~> iterate sheets instead For Each ws In Worksheets If ws.Name <> "Config" Then ws.Name = MyNames(i) '~~> retrieve from array i = i + 1 End If Next ws End Sub 

这是你想要的吗?