VBA将date格式从DMY更改为MDY

将string与表单中的值进行比较时遇到问题。 在csv文件中,我获得了值为“8-9-2016”的variables“BookingDate”。 我想通过Excel工作表来检查是否有与该值匹配。 我发现当我想在VBA中使用它们时,从表中读取的值会发生变化。 比方说,我设置了一个variablesBookingDate2并给它一个这样的值:

 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 

然后我想检查是否find这样的匹配:

 If (BookingDate = BookingDate2) Then 'Do something 

我现在BookingDate的问题是, BookingDate值为“8-9-2016”,BookingDate2的值为“8-9-2016”,但更改为“9-8-2016”。 我怎样才能解决这个问题?

我修好了它!

我忘了将variables变暗为Date。 这是这样的:

 Dim BookingDate As String Dim BookingDate2 As String 

但它必须是:

 Dim BookingDate As Date Dim BookingDate2 As Date 

这对我来说是诀窍。

如果您确实知道BookingDate2的格式总是“dmy”,并且您希望它是“mdy”,则一种方法是拆分date值,颠倒顺序,然后将其保存回具有正确格式的variables在testing它们的值之前。 尝试这个:

 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和电子表格中的date格式都不会改变