VBA Excel,根据Cell Value重命名工作表

时间:2014-05-14 01:16:12

标签: excel vba

我需要根据一系列单元格值动态重命名所有工作表。 这是我的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上出错?请帮忙!

1 个答案:

答案 0 :(得分:3)

我认为问题是通过.Select方法激活您正在处理的工作表 尽可能Avoid using 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

这是你正在尝试的吗?