首页 文章

使用VBA重命名列表中的多个工作表

提问于
浏览
1

我是VBA的新手,我试图从列表中命名工作表 . 我有一个包含133个工作表的文件,并希望从其中一个工作表的列表中命名每个工作表 . 单元格B1至B133具有所需名称的列表,单元格c1至c133具有页面名称(Sheet1至Sheet 133) . 我尝试了两种不同的代码无济于事 . 我错过了什么?

这是B&C列的外观摘录 .

File details                    Sheet 1
Sheet Names                     Sheet 23
Calc Notes                      Sheet 2
Rank comparison - baseline      Sheet 3
Trend - Top 30 ct vs baseline   Sheet 5
Trend - Top 30 dur vs baseline  Sheet 6
Trend - Top 30 MTBF vs baseline Sheet 7
Trend - Top 30 ct_dur vs base   Sheet 8
Avail, MTBeF, MTTR scorecard    Sheet 10
Avail, MTBeF, MTTR - Excluded   Sheet 11
All-in vs Excluded              Sheet 12
Summary all lines - count            Sheet 13
Summary all lines - duration    Sheet 14
fault - count                   Sheet 15
fault - duration                Sheet 16
gap count-query vs fault sum    Sheet 17
gap duration-query vs fault sum Sheet 18
missing faults                  Sheet 20
query                           Sheet 9
Prod unit ref                   Sheet 21
Pd Wk ref                       Sheet 22
Query ref                       Sheet 4
FTT                             Sheet 19

#1 (runtime error '424')

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim x As Integer
Dim y As Integer
Dim z As Integer
x = 1
y = 133

For z = 1 To 133
sheetz.Name = Range(Cells(x, 2), Cells(y, 2))
Next z


End Sub

#2 (runtime error '91')

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Excel.Worksheet
Dim z As Integer

    For z = 1 To 133
        If ws.Name = Sheetz Then
            Sheetz.Name = Cells(z, 2)
        End If
        Exit For
    Next z

End Sub

3 回答

  • 2
    Sub RenameSheets()
        For i = 1 To 133
            On Error Resume Next
            oldname = Cells(i, 3).Value
            newname = Cells(i, 2).Value
            Sheets(oldname).Name = newname
        Next
    End Sub
    
  • 3

    可能抛出错误的事情是 Sheetz . 表格的索引应在括号内,即 Sheet(z)

  • 1

    请尝试使用此代码:

    Sub test()
       On Error Resume Next
       For Each oldName In ThisWorkbook.Workseets("Sheet1").Range("C1:C133")
           ThisWorkbook.Worksheets(oldName.Value).Name = oldName.Offset(0, -1).Value
       Next
    End Sub
    

    请注意,您的 C1:C133 范围应包含不带引号的工作表名称(正确: Sheet1 ,不正确: "Sheet1"

相关问题