Я все еще изучаю Excel VBA и был бы признателен, если бы кто-нибудь помог мне сделать это правильно. Я хочу отфильтровать столбец даты на основе startDate и endDate, которые я указал на листе с именем DateMaster. Когда я запускаю макрос, он выдает ошибку времени выполнения 13, дата начала = 0. Ниже приведен мой код.
Sub FIlterCopy()
Dim StartDate As Long
Dim EndDate As Long
StartDate = ThisWorkbook.Worksheets("DateMaster").Range("C2").Value
EndDate = ThisWorkbook.Worksheets("DateMaster").Range("D2").Value
Application.ScreenUpdating = False
ThisWorkbook.Worksheets("FilterMaster").Activate
Range("A:BA").Select
Selection.ClearContents
Application.Workbooks.Open ("C:\WRI\Data\Revenue Update.xls")
Windows("Revenue Update.xls").Activate
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:= _
"=Backlog", Operator:=xlOr, Criteria2:="=RMA"
Selection.AutoFilter Field:=29, Criteria1:= _
"=Direct"
Selection.AutoFilter Field:=20, Criteria1:=">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
Application.ScreenUpdating = True
End Sub
F8
? Кроме того, я бы не стал выбирать и активировать в вашем коде. В этом сообщении объясняется, как это сделать. Вы получаете эту ошибку, потому что это несоответствие типов. - person Dan   schedule 29.03.2016Dim StartDate As Date
. (2) Сообщение об ошибке довольно очевидно. Почему бы вам не проверить, действительно ли ячейка C2 содержит действительную дату. (3) Даже если есть дата, которую вы можете подтвердить, добавив:If IsDate(ThisWorkbook.Worksheets("DateMaster").Range("C2").Value) Then
непосредственно перед назначением даты иDebug.Print StartDate
сразу после назначения переменной. - person Ralph   schedule 29.03.2016