我在使用Excel中的VBA中的Format()函数时遇到问题。我不知道问题是什么。我之前在多个地方使用了Format()函数,并且从来没有像这样给出过麻烦。VBA中格式化()函数无法正确格式化日期
对于上下文,让我简单解释一下情况。我有一堆工作表,都以“mmm-yy”格式的月份年份组合(除了“主表格”表格)命名。在下面的功能(简化为相关性)中,我的目标是循环显示每张纸,并以“yyyy”格式显示它的名称。如您所见,在第7行中,我使用Format()函数将工作表名称转换为“yyyy”格式。
Function populateYearsCBB()
Dim WS As Worksheet
Dim yyyyName As Integer
For Each WS In ThisWorkbook.Worksheets
If WS.name <> "Main Sheet" Then
'WS.name is therefore a month-year combo of "mmm-yy" format
yyyyName = Format(WS.name, "yyyy") 'LINE 7
MsgBox (yyyyName)
End If
Next
End Function
多一点背景:我的第5张是2016年的前五个月(5月 - 16年4月 - 16月16 ...),其余12是12个月的2015年( 12月15日,11月15日...)。
当然,当我运行这个函数时,我希望我的消息框的输出为:“2016”,“2016”,“2016”,“2016”,“2016”(五个月2016年),然后是“2015年”的12倍。对?
奇怪的是,我收到了17个消息框,都说“2016”。
出于某种原因,第7行上的Format()函数似乎也将2016年的月份读为2016年。
我不能为我的生活找出这里发生了什么。有人请帮忙?
在此先感谢!
它解释了'15'和'16'如天,默认为2016年一年。对于你的特定格式'“20”&Right(WS.Name,2)'会起作用。 – arcadeprecinct