Sorenが述べたように、あなたのコードはエラーを出しています。
ただし、シート「B」が既に存在するため、「B」の作成後にシート「A」がアクティブな場合、コードでエラーが発生します。
これを試してみませんか?このため、どのシートがアクティブであるかは重要ではありません。また、このコードを使用すると、 を超えるシートを作成できますZ
。したがって、以降のシートはなどのZ
名前になります。AA
AB
XFD
このコードを使用すると、XL2007+ では最大16383 シートまでシートを作成できます。
IV
このコードを使用すると、XL2003 では最大255 枚までのシートを作成できます。
コード:
Sub newList()
Dim PrevLetter As String
Dim ws As Worksheet, wsNew As Worksheet
Dim wsname As String
Set ws = ThisWorkbook.Sheets("A")
ws.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set wsNew = ActiveSheet
wsname = GetNewName
wsNew.Name = wsname
End Sub
Function GetNewName() As String
Dim NewWs As Worksheet
For i = 2 To ThisWorkbook.Sheets(1).Columns.Count
ColName = Split(ThisWorkbook.Sheets(1).Cells(, i).Address, "$")(1)
On Error Resume Next
Set NewWs = ThisWorkbook.Sheets(ColName)
If Err.Number <> 0 Then
GetNewName = ColName
Exit For
End If
Next i
End Function