excel 如何忽略错误“该名称已被占用,换一个试试,”

nbysray5  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(324)

我的VBA声明如下。


的数据
当我使用喷气机报告时,工作簿将更新,有时单元格“B3”中的名称是相同的,有时是不同的。
我应该在这个字符串中添加什么来忽略“那个名字已经被占用了。换一个试试。”

Sub RenameSheet()

Dim rs As Worksheet

For Each rs In Sheets
rs.Name = rs.Range("B3")
Next rs

End Sub

字符串
不知道如何修复

lmvvr0a8

lmvvr0a81#

重命名工作表

Sub RenameWorksheetsShort()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim ws As Worksheet, NewName As String
    
    For Each ws In wb.Worksheets
        NewName = CStr(ws.Range("B3").Value)
        If ws.Name <> NewName Then
            On Error Resume Next
                ws.Name = NewName
            On Error GoTo 0
        End If
    Next ws

End Sub

字符串

之前


的数据

之后


详情

Sub RenameWorksheets()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim wsCount As Long: wsCount = wb.Worksheets.Count
    Dim Arr(): ReDim Arr(1 To wsCount)

    Dim ws As Worksheet, w As Long, ErrNumber As Long, NewName As String
    
    For Each ws In wb.Worksheets
        NewName = CStr(ws.Range("B3").Value)
        If ws.Name <> NewName Then
            On Error Resume Next
                ws.Name = NewName
                ErrNumber = Err.Number
            On Error GoTo 0
            If ErrNumber <> 0 Then
                w = w + 1
                Arr(w) = """" & ws.Name & """ to """ & NewName & """"
            End If
        End If
    Next ws

    If w = 0 Then
        MsgBox "Worksheet names updated.", vbInformation
    Else
        If w < wsCount Then
            ReDim Preserve Arr(1 To w)
        End If
        MsgBox "Could not rename the following worksheets:" & vbLf & vbLf _
           & Join(Arr, vbLf), vbCritical
    End If
    
End Sub

相关问题