Excel 自动更改工作表名称

Excel 自动更改工作表名称,excel,vba,Excel,Vba,我希望运行一个宏,在新的财政年度开始时自动重命名我的工作表。我的工作表标有1月18日、2月18日、3月18日等,其中18代表18个会计年度。我已经创建了一个用户表单,当选择10月份时,我希望将所有带有18的表作为会计年度增加到19。第二年,到20岁。每年必须手动更改这些设置,这可能会让人望而生畏。老实说,我甚至不知道如何开始尝试这个。我知道我很可能需要循环浏览工作表,并使用某种变量进行替换。如有任何建议,将不胜感激 这里有一个简单的循环来完成你的提问。第一个案例是列出希望代码不运行的工作表。对于

我希望运行一个宏,在新的财政年度开始时自动重命名我的工作表。我的工作表标有1月18日、2月18日、3月18日等,其中18代表18个会计年度。我已经创建了一个用户表单,当选择10月份时,我希望将所有带有18的表作为会计年度增加到19。第二年,到20岁。每年必须手动更改这些设置,这可能会让人望而生畏。老实说,我甚至不知道如何开始尝试这个。我知道我很可能需要循环浏览工作表,并使用某种变量进行替换。如有任何建议,将不胜感激

这里有一个简单的循环来完成你的提问。第一个
案例
是列出希望代码不运行的工作表。对于所有其他工作表,宏将在最后两个字符中添加1。因此,如果以下格式不适用于所有目标图纸名称,则此解决方案将失效:
MMM YY

如果有一个
Userform
来启动该过程,只需从
Userform
调用该宏即可


如果希望宏忽略某些工作表,请尝试以下操作

Option Explicit

Sub NewYear()

Dim ws As Worksheet

For Each ws In Worksheets
    Select Case ws.Name
        Case "Sheet1", "Sheet1", "Sheet3" 
        'List any sheets that you want the macro to ignore here ^            

    Case Else
        ws.Name = Left(ws.Name, 3) & Chr(32) & Right(ws.Name, 2) + 1

Next ws

End Sub

如果宏应在所有图纸上运行,则可以减少到

Sub NewYear()

Dim ws As Worksheet

For Each ws In Worksheets
    ws.Name = Left(ws.Name, 3) & Chr(32) & Right(ws.Name, 2) + 1 
Next ws

End Sub

我反复地将字符串末尾的字符转换为整数,然后再转换回字符串,这可能不是必需的,但在测试过程中起到了作用:

Sub sheetRename()
Dim wb As Workbook
Dim ws As Worksheet

For Each ws In Worksheets
If IsNumeric(Right(ws.Name, 2)) Then
ws.Name = Left(ws.Name, Len(ws.Name) - 2) & CStr(CInt(Right(ws.Name, 2)) + 1)
End If
Next ws


End Sub

它还包括检查工作表名称是否以两个数字结尾。希望有帮助。

1)记录一个宏,手动更改工作表名称。2) 修改该代码,以便可以在循环中对书中的所有工作表应用该代码。3) 如果/当你陷入困境时,将你试图使用的代码张贴在这个问题的主体中,以及你有什么具体的问题/错误(aka)。如果没有这些,你基本上只是要求别人为你做工作。工作表的名称总是这样吗<代码>MMM YY?