日期格式从D-M-Y变为M-D-Y

时间:2017-01-13 15:12:30

标签: excel vba

在csv文件中,我获得值为“8-9-2016”的变量BookingDate。如果与该值匹配,我想循环查看Excel工作表。

我发现,当我想在VBA中使用它时,我从工作表中读取的值会发生变化。比方说,我设置了一个变量BookingDate2并给它一个这样的值:

LR = ThisWorkbook.Sheets("Sheetname").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
    BookingDate2 = ThisWorkbook.Sheets("Boekingen AMS-IAD").Cells(i, 1).Value

然后我想检查,如果找到这样的匹配:

If (BookingDate = BookingDate2) Then
    'Do something

BookingDate的值为“8-9-2016”,BookingDate2的值应为“8-9-2016”,但更改为“9-8-2016”。

2 个答案:

答案 0 :(得分:5)

我修好了!

我忘了将变量调暗到Date。 就像这样:

Dim BookingDate As String
Dim BookingDate2 As String

但必须是:

Dim BookingDate As Date
Dim BookingDate2 As Date

这对我有用。

答案 1 :(得分:0)

如果您确定BookingDate2始终具有“dmy”的格式并且您希望它是“mdy”,则一种方法是拆分日期值,颠倒顺序,然后将其保存回来在测试其值之前,使用正确的格式变量。试试这个:

LR = ThisWorkbook.Sheets("Sheetname").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
    BookingDate2 = ThisWorkbook.Sheets("Boekingen AMS-IAD").Cells(i, 1).Value
    Dim aux
    aux = Split(BookingDate2,"-")
    BookingDate2 = aux(1) & "-" & aux(0) & "-" & aux(2) 'reordering the date in the desired format

    If (BookingDate = BookingDate2) Then
        'Do something

当然,这是假设您的CSV和电子表格中的日期格式都没有改变