【发布时间】:2020-09-28 09:55:29
【问题描述】:
我有一个文件,我需要检查当前周是否在每条记录的指定日期内。名为“有效日期”和“到期日期”的日期位于 E 和 F 列中。由于该文件是从某个数据库下载的,因此我对这些列进行了一定程度的清理。 (注意:“当前”周总是前一周)
这是我的代码:
Public Sub datechk()
Dim wb As Workbook
Dim ws As Worksheet
Dim i, cnt As Long
Dim temp As String
Dim current_Sun, current_Mon As Date
Set wb = ThisWorkbook
Set ws = wb.ActiveSheet
current_Mon = Date - Weekday(Date, vbMonday) + 1 - 7
current_Sun = Date - Weekday(Date, vbSunday) + 1
ws.Range("C1").CurrentRegion.Replace What:="null", Replacement:="", _
SearchOrder:=xlByColumns, MatchCase:=False
cnt = Application.WorksheetFunction.CountA(ws.Range("C:C"))
'short date format
For i = 2 To cnt
temp = ws.Cells(i, "E").Value
On Error Resume Next
ws.Cells(i, "E").Value = Mid(temp, 1, InStr(temp, " ") - 1)
temp = ws.Cells(i, "F").Value
On Error Resume Next
ws.Cells(i, "F").Value = Mid(temp, 1, InStr(temp, " ") - 1)
Next
On Error GoTo 0
ws.Range("E:F").NumberFormat = "dd/mm/yyyy"
For i = 2 To cnt
If current_Sun <= ws.Cells(i, "E").Value Or current_Mon >= ws.Cells(i, "F").Value Then
ws.Cells(i, "G").Value = 0
Else
ws.Cells(i, "G").Value = 1
End If
If IsEmpty(ws.Cells(i, "F")) Or ws.Cells(i, "F").Value = 0 Or ws.Cells(i, "F").Value = "" Then
ws.Cells(i, "G").Value = 1
End If
Next
End Sub
E 和 F 列包含生效日期和到期日期。 G 列是我检查我当前的一周是否在日期范围内的检查器。
现在这在我的笔记本电脑上运行良好。但是,当我的客户运行代码时,他遇到了错误。到期日期 (F) 列中的某些单元格以 (mm-dd-yyyy) 格式出现,因此无法检查。
例如: 到期日期是 01-10-2020,在我客户的输出文件中,它显示为 10-01-2020。
这种情况并非在每一行都发生,并且在生效日期 (E) 中也没有发生。我已经检查了我的客户拥有的输出文件,并且该特定单元格上的格式仍然是 dd-mm-yyyy。
是否有人碰巧知道为什么会发生这种情况以及如何解决?由于我自己运行代码时没有收到此错误,因此我也无法尝试修复它。
(这是我第一次发帖。如果需要更多信息,请告诉我)
TIA
【问题讨论】: