我使用以下方式命名工作表:
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个字符时,第1个和第2个名称相似,并且VB抛出错误“无法将工作表重命名为与另一个工作表,引用的对象库或visualbasic引用的工作簿相同的名称。 “
我可以毫无错误地执行此操作,并将工作表命名为 CBDeltaBlock_SAP03_to_Delta01 和 CBDeltaBlock_SAP03_to_Delta02 或任何所需名称。
答案 0 :(得分:0)
以下是更改工作表名称(如果已存在)的示例。
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
注意:以上代码只是示例代码。错误处理尚未包含在上面的代码中,不用说错误处理是必须的:)