1

我需要将字符串变量转换为 VBA 宏中的日期变量,以处理日期以获取 mMonth 和 year 以便命名工作表

Call GetMonthandYear(MonthYear, FileDate)
    ActiveSheet.Name = MonthYear

我希望创建一个名为 GetMonthandYear 的方法。FileDate 是日期格式的字符串,dd.MM.yyyy HH-mm-ss. 如果我可以将变量更改为日期,我可以将格式更改为MMMM/yyyy然后使用ToString,我认为,并将其分配给MonthYear

有没有办法将字符串更改为日期?

4

3 回答 3

2

您提出的方法存在几个问题:

  1. 将字符串转换为日期序列可能会出现问题,不确定 Excel 是否会将日期解释为dd.MMMM.dd。由于您事先知道格式,因此直接提取月份和年份。
  2. \不是工作表名称的有效字符。我用过_,随意替换

Function GetMonthandYear(FileDate As String) As String
    Dim dot1 As Long, dot2 As Long
    Dim m As String, y As String

    dot1 = InStr(FileDate, ".")
    dot2 = InStr(dot1 + 1, FileDate, ".")
    m = Mid$(FileDate, dot1 + 1, dot2 - dot1 - 1)
    y = Mid$(FileDate, dot2 + 1, InStr(FileDate, " ") - dot2 - 1)

    GetMonthandYear = Format$(DateSerial(y, m, 1), "MMMM_yyyy")
End Function

像这样称呼它

Sub Test()
    Dim FileDate As String
    FileDate = "15.04.2012 16-31-18"

    ActiveSheet.Name = GetMonthandYear(FileDate)

End Sub
于 2012-04-15T19:45:05.880 回答
0

您是否尝试过使用 CDate 和 Format 函数?

于 2012-04-15T13:30:57.877 回答
0

您可以使用 CDate 函数获取日期,但它需要-替换为.:./

Dim yourStringDate, sBuf As String
Dim yourDateVariable As Date

yourStringDate = "15.04.2012 16-31-18"
sBuf = Replace$(yourStringDate,"-", ":")
sBuf = Replace$(sBuf, ".", "/")
yourDateVariable = CDate(sBuf)

MsgBox yourDateVariable
于 2012-04-15T13:38:10.640 回答