使用If然后用多个或运算符为Date

我试图创build与多个或运算符的If函数的vba编码。

我希望它在范围C10和C12中search整个工作簿。 如果在C10中发现“否”,或者如果date匹配或者date已经过了C12中的date,我希望它将表格名称返回到范围A8。 但是,如果C12没有date,我不希望它返回。

这是我迄今为止:

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 

假设你的意思是今天的date已经达到或通过C12;

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

另外,我会使用with块去掉ws而不是wsAddPatient因为你只用了一次,所以它不会为你节省任何代码。 但是这对于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