3
ExcelのVBAをまだ学習しています。誰でもこの権利を得ることができれば感謝します。 DateMasterというシートで指定されたstartDateとendDateに基づいて日付列をフィルタリングしたいと思います。マクロを実行すると、ランタイムエラー13、開始日= 0が返されます。以下は私のコードです。Excel VBA - 日付の列に日付の列を入力します。
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'を使ってコードをステップ実行しようとしましたか?また、私はあなたのコードを選択して起動するのを避けるでしょう。 [この投稿はどのように説明しますか?](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。これは型の不一致であるため、このエラーが発生しています。 – Dan
(1)変数に日付を格納したい場合は、 'Dim StartDate As Date'のように保存することができます。 (2)エラーメッセージはかなり明白です。セルC2に本当に有効な日付が含まれているかどうかを確認してください。 (3)Dateがあっても、If IsDate(ThisWorkbook.Worksheets( "DateMaster")。Range( "C2").Value)を追加すると、日付を割り当てる直前に 'Debug .Print StartDate'を実行してください。 – Ralph
Dim文字列ではなく、作業日として開始します。みんなありがとう!!! –