私はそれはつまり、あなたが範囲名にカウンターを保存し、あなたのシートをインクリメントすることを使用することができ、あなたに
Sub TESTONE()
Dim MySheetName As String
Dim MyCodeName As String
Dim wks As Worksheet
MySheetName = "Rename Me"
MyCodeName = "BidSheet"
If VBA_Copy_Sheet = Empty Then
Set VBA_Copy_Sheet = ActiveSheet
End If
VBA_Copy_Sheet.Copy After:=ActiveSheet
ActiveSheet.Name = GetNewSheetName(MySheetName, 0)
ActiveSheet.Tab.ColorIndex = 3
Set wks = ActiveSheet
MyCodeName = GetNewCodeName(MyCodeName, 0)
ThisWorkbook.VBProject.VBComponents(wks.CodeName).Name = MyCodeName
End Sub
Function GetNewSheetName(ByVal newName As String, ByVal n As Integer) As String
Dim ws As Worksheet
Dim modifiedName As String
modifiedName = newName & n
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = modifiedName Then
n = n + 1
modifiedName = GetNewSheetName(newName, n)
Exit For
End If
Next
GetNewSheetName = modifiedName
End Function
Function GetNewCodeName(ByVal newName As String, ByVal n As Integer) As String
Dim ws As Worksheet
Dim modifiedName As String
modifiedName = newName & n
For Each ws In ActiveWorkbook.Worksheets
If ws.CodeName = modifiedName Then
n = n + 1
modifiedName = GetNewCodeName(newName, n)
Exit For
End If
Next
GetNewCodeName = modifiedName
End Function
いや、理由もなく。あなたが推測したように1だけインクリメントして文字列に追加して、必要なだけ多くのシートをループすることができます。 – Tim
コピーシートの前にシート名を検出しないのはなぜですか? サブFnGetSheetsName() 点心mainworkBookブックとして 設定mainworkBook = ActiveWorkbook についてはI = 1 mainworkBook.Sheets.count へ 「のいずれか我々はここで、配列内のすべての名前を置くことができ、我々は内のすべての名前を印刷していますシート2 mainworkBook.Sheets(「Sheet2の」)。レンジ(「A」&I)= mainworkBook.Sheets(I).nameの 次のIそれをコピーするので End Subの –
@Tim値+ 1が動作しません。シートを作成し、最初に機能する最後に1を追加しますが、シートをもう一度コピーしようとすると、コピーされた最初のコピーと同じ名前になります。 – luke