将字符串变量转换为日期

时间:2012-04-15 13:25:46

标签: excel-vba date-format vba excel

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

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

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

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

3 个答案:

答案 0 :(得分:2)

您提出的措施有几个问题:

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

  3. 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
    

答案 1 :(得分:0)

您是否尝试过使用CDate和Format功能?

答案 2 :(得分: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