我需要帮助。我有Sheet 1和Sheet2。在Sheet1 / 2中,我在B栏中有日期,两个工作日期都不相同,但当我推荐选择打印日期时,我希望VBA选择最近的日期,如果它找不到我的约会。例如: - 如果我要求VBA从日期12-Aug-17打印我可以在sheet1中选择,但在Sheet 2中没有8月12日,所以它必须选择13或11并打印。 在我的编码中,如果它在同一天,它将打印两张纸。但如果失败则会显示错误。
请参阅下面的代码。
Sub nextdate()
Dim Sh As Worksheet
Set sh2 = Sheets("Sheet2")
Set sh3 = Sheets("Sheet3")
Dim i, j2, j3, sh2EndCell, sh3EndCell As Integer
Dim W1Enddate As Date
W1Enddate = Application.InputBox("Enter the End Date")
ddate = Range("B" & Rows.Count).End(xlUp).Row
sh2EndCell = sh2.Range("b" & Rows.Count).End(xlUp).Row
sh3EndCell = sh3.Range("b" & Rows.Count).End(xlUp).Row
For i = 2 To sh2EndCell
If sh2.Range("b" & i).Value = W1Enddate Then
j2 = i
Exit For
End If
答案 0 :(得分:0)
不确定我的问题描述是否正确,但请尝试以下方法:
...
...
sh2EndCell = sh2.Range("b" & Rows.Count).End(xlUp).Row
Dim MinDateDiff As Long
Dim ClosestDate
MinDateDiff = 1000000
For i = 2 To sh2EndCell
If Abs(DateDiff("d", sh2.Range("b" & i).Value, W1Enddate)) < MinDateDiff Then
MinDateDiff = Abs(DateDiff("d", sh2.Range("b" & i).Value, W1Enddate))
ClosestDate = sh2.Range("b" & i).Value
j2 = i
End If
Next