使用If然后与多个或运营商的日期

问题描述:

我试图创建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

假设你的意思是今天的日期已达到或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