【问题标题】:Error when truncating the sheet names截断工作表名称时出错
【发布时间】:2012-04-27 00:21:10
【问题描述】:

我正在使用 :

命名工作表
            arrayCollabName = Array("CBDeltaBlockStatus_SAP03_to_Delta01", "CBDeltaBlockStatus_SAP03_to_Delta02", "CBDeltaDeliveryInformation_SAP03_to_Delta01") 

            If Len(arrayCollabName(idx)) > 31 Then
                 ActiveSheet.Name = Left(arrayCollabName(idx), 31)
            Else
                 ActiveSheet.Name = arrayCollabName(idx)
            End If

在数组中,当名称被截断为 31 个字符并且 VB 抛出错误“无法将工作表重命名为与另一个工作表、引用的对象库或由 visualbasic 引用的工作簿相同的名称时,数组中的第一个和第二个名称是相似的。 "

我可以通过任何方式做到这一点而不会出错,并将工作表命名为 CBDeltaBlock_SAP03_to_Delta01CBDeltaBlock_SAP03_to_Delta02 或任何所需的名称。

【问题讨论】:

  • 是的,你可以。为此,您将不得不使用错误处理或检查工作表是否存在(在循环中)

标签: excel vba


【解决方案1】:

这是一个更改工作表名称(如果已存在)的示例。

Option Explicit

Sub Sample()
    Dim i As Long
    Dim strShName As String

    strShName = "BlahBlah"

    Sheets.Add

    Do Until DoesSheetExist(strShName) = False
        i = Int((1000 * Rnd) + 1)
        strShName = strShName & i
    Loop

    ActiveSheet.Name = strShName
End Sub

Function DoesSheetExist(ByVal strSheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = Sheets(strSheetName)
    On Error GoTo 0
    If Not ws Is Nothing Then DoesSheetExist = True
End Function

上述方法将在工作表末尾添加一个随机数。如果您想按升序排列,请使用以下代码。

Option Explicit

Sub Sample()
    Dim i As Long
    Dim strShName As String

    strShName = "BlahBlah"

    Sheets.Add

    If DoesSheetExist(strShName) = True Then
        i = 1
        Do Until DoesSheetExist(strShName & i) = False
            i = i + 1
        Loop
        strShName = strShName & i
    End If

    ActiveSheet.Name = strShName
End Sub

Function DoesSheetExist(ByVal strSheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = Sheets(strSheetName)
    On Error GoTo 0
    If Not ws Is Nothing Then DoesSheetExist = True
End Function

注意:以上代码只是示例代码。错误处理并没有包含在上面的代码中,不用说错误处理是必须的:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2023-03-07
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多