Vba 如何按字母顺序命名Excel工作表?
我正在尝试创建一个宏,它将复制实际的工作表,并用字母表的下一个字母命名。工作簿中始终存在第一页“A”,必要时将添加其他页(B、C、D等)。我设法拼凑了下面的代码,可以创建工作表“B”。问题是,当复制工作表“B”时,我得到运行时错误“1004”,表明最后一行代码有错误Vba 如何按字母顺序命名Excel工作表?,vba,excel,Vba,Excel,我正在尝试创建一个宏,它将复制实际的工作表,并用字母表的下一个字母命名。工作簿中始终存在第一页“A”,必要时将添加其他页(B、C、D等)。我设法拼凑了下面的代码,可以创建工作表“B”。问题是,当复制工作表“B”时,我得到运行时错误“1004”,表明最后一行代码有错误 Sub newList() ' New_List Macro Dim PrevLetter As String PrevLetter = "ActiveSheet.Name" ActiveSheet.Copy after:=Act
Sub newList()
' New_List Macro
Dim PrevLetter As String
PrevLetter = "ActiveSheet.Name"
ActiveSheet.Copy after:=ActiveSheet
ActiveSheet.Name = Chr(Asc(PrevLetter) + 1)
End Sub
你们中有谁能帮上忙吗?您只需像这样编写代码即可:
Sub newList()
' New_List Macro
Dim PrevLetter As String
PrevLetter = ActiveSheet.Name '<--- Change made to this line
ActiveSheet.Copy after:=ActiveSheet
ActiveSheet.Name = Chr(Asc(PrevLetter) + 1)
End Sub
子新列表()
'新建列表宏
将字母变为字符串
PrevLetter=ActiveSheet.Name'您的代码出现了索伦提到的错误
但是,如果工作表“A”在创建“B”之后处于活动状态,则代码将给出一个错误,因为工作表“B”已经存在
你可能想试试这个?为此,哪张图纸处于活动状态并不重要。此外,此代码还允许您在Z
之外创建图纸。因此Z
之后的纸张将命名为AA
,AB
等
- 使用此代码,您可以在XL2007+中创建工作表,直到
XFD
(更多16383张工作表)
- 使用此代码,您可以在XL2003中创建直到
IV
(超过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
子新列表()
将字母变为字符串
将ws作为工作表,将ws作为工作表新建
将wsname设置为字符串
Set ws=ThisWorkbook.Sheets(“A”)
ws.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
设置wsNew=ActiveSheet
wsname=GetNewName
wsNew.Name=wsname
端接头
函数GetNewName()作为字符串
将NewWs设置为工作表
对于此工作簿的i=2。工作表(1)。列数
ColName=Split(ThisWorkbook.Sheets(1).单元格(,i).地址,“$”)(1)
出错时继续下一步
Set NewWs=thisvoolk.Sheets(ColName)
如果错误号为0,则
GetNewName=ColName
退出
如果结束
接下来我
端函数
以下是另一种方法:
Sub newList()
' New_List Macro
Dim PrevLetter As String
Dim wb As Workbook
Dim ws1 As Worksheet
Set wb = ActiveWorkbook
Set ws1 = wb.ActiveSheet
PrevLetter = ws1.Name
ws1.Copy After:=ws1
Sheets(Sheets.Count).Name = Chr(Asc(PrevLetter) + 1)
Set wb = Nothing
Set ws1 = Nothing
End Sub
我真的很惊讶这么快就得到了答案。所有的变体都可以工作,然而,Siddharth的解决方案对我来说确实是最有用的,因为可以从任何一张图纸创建新的图纸。谢谢大家,伙计们。@Søren,@Chris