我试图根据输入到输入框中的季度过滤掉日期,但它总是抛出错误。我是vba的新手,还在学习。任何帮助都将不胜感激。谢谢。这就是我到目前为止想出的。
ResponseYr = SdrYear
ResponseQtr = SdrQtr
If ResponseQtr = 1 Then
BeginDate = "1 / 1 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 1, 1)
EndDate = "31 / 3 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 3, 31)
'Quarter1 = Range("BeginDate:EndDate")
ElseIf ResponseQtr = 2 Then
BeginDate = "1 / 4 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 4, 1)
EndDate = "30 / 6 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 6, 30)
'Quarter2 = Range("BeginDate:EndDate")
ElseIf ResponseQtr = 3 Then
BeginDate = "1 / 7 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 7, 1)
EndDate = "30 / 9 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 9, 30)
'Quarter3 = Range("BeginDate:EndDate")
ElseIf ResponseQtr = 4 Then
BeginDate = "1/10/" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 10, 1)
EndDate = "31 / 12 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 12, 31)
'Quarter4 = Range("BeginDate:EndDate")
End If
With ActiveSheet.Range("A:AD")
'.AutoFilterMode = False
.AutoFilter Field:=15, Criteria1:=Array("Accept", "Alteration Change Commencement Date", "Alteration
Reinstatement", "Alteration Manual", "Term Expire", "Claim Repudiated", "Claim Payment Done"),
Operator:=xlFilterValues
.AutoFilter Field:=13, Criteria1:=">=BeginDate", Operator:=xlAnd, Criteria2:="<=EndDate"
End With发布于 2019-12-20 22:39:03
要完整地回答您的问题,了解错误发生的位置会很有帮助。要筛选出所需的日期,必须将字符串和变量分开:
.AutoFilter Field:=13, Criteria1:=">=" & BeginDate, Operator:=xlAnd, Criteria2:="<=" & EndDate但是,在excel vba中筛选日期可能会很棘手。您可能还需要将日期转换为数字:
.AutoFilter Field:=13, Criteria1:=">=" & CDbl(CDate(BeginDate)), Operator:=xlAnd, Criteria2:="<=" & CDbl(CDate(EndDate))https://stackoverflow.com/questions/59425751
复制相似问题