首页 > 解决方案 > 日和年反转 VBA

问题描述

我正在尝试比较我编写的 vba 脚本中的日期,但是我遇到了一个问题,即输入格式函数的日期将日期读取为年份,将年份读取为日期。您可以想象这会显着抛出脚本,从而导致许多错误。有问题的日期值被格式化为日期,因为我通过 IsDate 函数运行它们并返回了一个真值。

当我调用该值时,这些是立即窗口中生成的值。在此处输入图像描述

当我使用 Format(ws.Cells(i, 1).Value,"dd-MM-yy") 转换格式时,我在即时窗口中收到以下数据。

在此处输入图像描述

以下是我在即时窗口中比较它们的脚本,以及我从中获得这篇文章中使用的照片的地方。

Sub Rem9()
Dim i As Long
Dim lr As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
 wsName = ws.Name

 lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

  FirstDateRead = CDate("1, 1,2018") 'Initialize the first Day of the year as the last day

For i = 1 To lr
Debug.Print FirstDateRead
Debug.Print CStr(ws.Cells(i, 1).Value)

Debug.Print DateDiff("m", ws.Cells(i, 1).Value, FirstDateRead)

Next i
End Sub

标签: vbaexcel

解决方案


你可以修复日期格式

Function FixDateFormat(strDate As String) As String
    Dim datePartsArray
    datePartsArray = Split(strDate, "-")
    FixDateFormat = datePartsArray(1) & "-" & datePartsArray(0) & "-" & datePartsArray(2)
End Function

推荐阅读