VBA for Excel行为不端......没有返回正确的值

时间:2017-05-10 21:19:33

标签: excel vba excel-vba

我的工作表中有以下功能...

Format(Range("AG1"), "mm")

我用它来自动填充saveas文件名,这是一个更大的功能,但除了这部分外,它都有效。作为更大功能的一部分,有

Year(Range("AG1"))

返回正确的年份" yyyy"格式。 (它不需要任何特定的格式,它只返回4位格式的年份。)

然而,第一个函数Format(Range("AG1"), "mm")总是返回01,表示是1月,它不是总是。我需要根据当前日期的月份返回" mm"格式。

Range("AG1")是指工作表中输入日期为[mm/dd/yyyy]的单元格。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:0)

根据此表,您应该使用" m"

No. Formatting code Display as      Example
1   ddd             Weekday name    Sat
2   dddd            Weekday name    Saturday
3   mmm             Month  name     Jan
4   mmmm            Month name      January
5   m               Month           1
6   d               Day             17

答案 1 :(得分:0)

这是对我有用的最终代码......

Private Sub btnCreate_Click()
  ActiveSheet.Copy
  Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)"
  ActiveSheet.Shapes.Range(Array("btnCreate")).Select
  Selection.Delete
  ActiveWorkbook.SaveAs "C:\Users\" & (Environ$("Username")) & "\Desktop\" & "Timecard, " & Year(Range("AG1")) & "-" & Format(Range("AG1"), "mm") & " - " & _
    Range("R2").Value & ", " & Range("T2").Value, xlOpenXMLWorkbookMacroEnabled
  ActiveWindow.Close
End Sub