我希望运行一个宏,该宏将在新会计年度开始时自动重命名我的工作表。我的工作表标记为JAN 18,FEB 18,MAR 18等,其中18代表会计年度18。我创建了一个用户表单,当选择了OCT月份时,我希望所有以18作为会计年度的工作表增加到19。第二年增加到20。这可能是艰巨的,必须每年手动更改。老实说,我不知道该如何开始尝试。我知道我很可能需要遍历工作表并使用某种变量进行替换。任何建议将不胜感激!
答案 0 :(得分:1)
这里是一个简单的循环,可以完成您的询问。第一个Case
是您要列出要不运行代码的工作表的位置。对于所有其他工作表,宏会将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
答案 1 :(得分:0)
我前后反复地将字符串末尾的字符转换为整数,然后再转换回字符串,这可能不是必需的,但是在测试时有效:
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
它还包括检查工作表名称是否实际上以两个数字结尾。希望对您有所帮助。