2016-03-28 25 views
0

我正在寫一個宏來查找工作表上的所有條目,並選擇第一行來匹配最早的日期。 我可以讓宏查找第一個日期(一週後),但如果第一個日期沒有返回任何匹配,則無法找到如何查找後續日期。如何在excel中找到一個日期或後續日期VBA

E.G. 今日:28Mar16。宏將回顧7天(21 Mar 16)。如果沒有21Mar16的條目,請找到第一個日期爲22 Mar 16的條目。如果沒有日期,23Mar16等。

這可能嗎?

這是迄今爲止代碼:

Private Sub CommandButton1_Click() 
Dim strFilename As String 
Dim rngRange As Range 
Dim strfind As String 

Set strfind = Worksheets("Report").Range("J1") 
Set rngRange = Worksheets("Report").Range("B:B") 

If opt1.Value = True Then 
Cells.Find(what:=strfind, after:=ActiveCell, LookIn:=xlValues, Lookat:=xlPart, _ 
    searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Activate 
If opt2.Value = True Then 
Cells.Find(what:=strfind, after:=ActiveCell, LookIn:=xlValues, Lookat:=xlPart, _ 
    searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Activate 



End If 
'Range("A1:H100").Select 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"C:\Desktop\Obs Diary Report week starting " & strFilename & ".pdf", Quality:= _ 
     xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
     OpenAfterPublish:=True 
End Sub 

感謝,

基督教

+0

。您的電子表格中的數據結構如何,您可以發佈迄今爲止的宏嗎? –

+0

Alex P,顯示電子表格中的數據,以便每個條目位於其自己的行上,組織方式如下: 名稱日期時間標題觀察等等 上面已添加宏代碼。 – Christian

回答

0

很難說什麼會在你的數據工作,但所有你需要做的就是通過Find循環每次增加搜索日期一次,直到找到今天的日期或找到某個東西。

這裏是你可以適應您的需求的例子:我相信這是可能的

Option Explicit 
Sub OneWeekAgo() 
    Dim dtEarliest As Date 
    Dim WS As Worksheet 
    Dim R As Range 

Set WS = ActiveSheet 
dtEarliest = Date - 7 

With WS.Cells 
    Do Until Not R Is Nothing 
     Set R = .Find(dtEarliest) 
      dtEarliest = dtEarliest + 1 
      If dtEarliest > Date Then 
       Debug.Print "No Dates in Last Week" 
       Exit Sub 
      End If 
    Loop 
End With 

If Not R Is Nothing Then 
    Debug.Print R.Address, R.Text 
End If 

End Sub