excel - 在 VBA 中更改日期
问题描述
我正在尝试自动替换工作表。目前我有多个标题为“JAN 18”、“FEB 18”、“MAR 18”等的工作表。我有一个在宏运行之前启动的用户表单。我可以输入新的一年(即:2019),但是代码继续显示我的表格年份“18”。就像进入用户表单的条目不起作用。我正在使用的脚本利用案例语句来选择上一年的所需文件并将其替换为当前年份。
Sub NewFiscalYear()
Dim ws As Worksheet
Dim PrevYear As Integer
Dim FormYear As Integer
FormYear = Format(Date, "yy")
PrevYear = FormYear - 1
'Disabling Display Alerts
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Changing FY Date on Forms
If FormMonth = "AUG" Then
For Each ws In Worksheets
Select Case ws.Name
Case "JAN " & PrevYear, "FEB " & PrevYear, "MAR " & PrevYear, "APR " & PrevYear, _
"MAY " & PrevYear, "JUN " & PrevYear, "JUL " & PrevYear, "AUG " & PrevYear, _
"SEP " & PrevYear, "OCT " & PrevYear, "NOV " & PrevYear, "DEC " & PrevYear
ws.Name = "ws.name " & FormYear
End Select
Next
End If
我正在编写一份大型报告,该报告从多个其他工作簿中收集信息。我的用户表单包括一个输入日期(FormYear)和一个通过组合框(FormMonth)选择的月份。一旦选择了这些,就会运行宏。我的报告工作得很好,但是在新的财政年度遇到了麻烦。
*****我的目标是让用户在新财政年度的第一个月运行报告,希望他们不会注意到任何变化(除了它看起来像一个全新的工作表)。选项卡指示在运行宏之前选择的当前月份以及在用户窗体中选择的会计年度。一旦标签被识别为新年,我将检查并重置所有带有空白数据的表格。我希望这能让事情更清楚一点!*****
任何提示或技巧将不胜感激!
解决方案
您的重命名行完全错误:
ws.Name = "ws.name " & FormYear
这将尝试将“JAN 18”更改为“ws.name 19”,因为您已将对象包含在引号中。
即使你得到了正确的报价:
ws.Name = ws.name & " " & FormYear
它将“JAN 18”更改为“JAN 18 19”
尝试:
ws.Name = Replace(ws.Name, PrevYear, FormYear)
编辑
另外,我认为您的 PrevYear/FormYear 可能不正确。
我会去:
PrevYear = Format(Date, "yy") ' so this is the current year value
FormYear = PrevYear + 1 ' this becomes next year value
推荐阅读
- provisioning-profile - Apple App 配置文件
- python-3.x - 使用 Python pandas read_csv 时 AWS EC2 上的内存错误
- node.js - 如何使用nodejs在猫鼬中插入当前日期
- javascript - Javascript过滤掉数组中的子字符串元素
- android - 从 android studio 的数据库表中显示一个用户的信息
- php - Php-SSRS 数据源凭证
- mysql - 为什么这条带有 CAST、CONVERT 和 FORMAT 的 SELECT 行不起作用?
- programming-languages - 仅键入接口
- azure - 将 Azure Corda 部署升级到最新的 3.1 版本
- javascript - 在子 div 外部单击时隐藏 div onClick | 反应JS