2017-07-28 32 views
2

我需要幫助在這裏。我有Sheet 1和Sheet 2。並在Sheet1/2中有B列日期和兩個工作表日期不相同,但是當我推薦選擇日期打印我想要VBA選擇最近的日期,如果它找不到我的日期。例如: - 如果我要求VBA從日期12-Aug-17打印,我可以在Sheet1中選擇,但在Sheet2中沒有8月12日,所以它必須選擇13日或11日並打印。 在我的編碼中,如果它的日期相同,它將打印兩張表。但如果失敗了,它會顯示錯誤。如何找到下一個日期,如果它沒有找到使用VBA的特定日期

請參閱下面我的代碼。

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

首先ddate不變暗以整數代碼。 ddate的用途是什麼? – TJYen

+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 
相關問題