使用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