如果没有find使用VBA的特定date,如何find下一个date

我需要帮助。 我有Sheet 1和Sheet 2。 并在Sheet1 / 2我有date列B和两个工作表date不相同,但当我推荐selectdate打印我想VBAselect最近的date,如果它找不到我的date。 例如: – 如果我要求VBA打印date12年8月12日我可以在Sheet1中select,但在Sheet2中没有8月12日,所以它必须select13日或11日打印。 在我的编码中,如果它在相同的date,它将打印两张表。 但是,如果失败了,它会显示错误。

请看下面我的代码。

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 

不知道我的问题描述是否正确,但试试这个:

 ... ... 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