2016-07-07 18 views
0

我試圖創建Vba編碼的If函數與多個或運營商。使用If然後與多個或運營商的日期

我希望它在範圍C10和C12中搜索整個工作簿。如果它在C10中找到「否」,或者如果日期匹配或日期已經超過C12中的日期,我希望它將表單名稱返回到範圍A8。但是,如果C12沒有日期,我不希望它返回。

這是我到目前爲止有:

Dim MRow As Long 
MRow = 8 
With wsAddPatient 
    For Each ws In ActiveWorkbook.Worksheets 
     If ws.Range("C10").Value = "No" Or ws.Range("C12").Value = Date And ws.Range("C12").Value > 0 Then 
      .Cells(MRow, 1).Value = ws.Name 
      MRow = MRow + 1 
     End If 
    Next 
End With 

更新決賽:

Dim MRow As Long 
MRow = 8 
With wsAddPatient 
    For Each ws In ActiveWorkbook.Worksheets 
     If (ws.Range("C10").Value = "No" _ 
      Or (ws.Range("C12").Value <= Date) _ 
      And ws.Range("C12").Value > 0) Then 
      .Cells(MRow, 1).Value = ws.Name 
      MRow = MRow + 1 
     End If 
    Next 
End With 
+0

錯誤在哪裏?當你說日期匹配時,你的意思是今天的日期嗎? –

+0

錯誤是,我無法讓它返回過去的日期值 – Alonso4077

回答

1

假設你的意思是今天的日期已達到或C12通過;

If (ws.Range("C10").Value = "No" _ 
Or ws.Range("C12").Value <= Date) _ 
And IsDate (ws.Range("C12").Value) Then 

而且,我會用with塊擺脫wswsAddPatient因爲你使用後者只有一次,所以它根本不會救你的任何代碼。但是這對ws有幫助:

Dim MRow As Long 
MRow = 8 
With ws 
    For Each ws In ActiveWorkbook.Worksheets 
     If (.Range("C10").Value = "No" _ 
     Or .Range("C12").Value >= Date) _ 
     And IsDate (ws.Range("C12").Value) Then 
      AddPatient.Cells(MRow, 1).Value = .Name 
      MRow = MRow + 1 
     End If 
    Next 
End With 
+0

稍作修改後,我能夠得到它。謝謝你的幫助! – Alonso4077