3
Hala Excel VBA'yı öğreniyorum ve eğer herkes bu hakkı elde etmeme yardım ederse memnun olurum. DateMaster adlı bir sayfada belirtilen bir startDate ve endDate I temelinde bir tarih sütunu filtrelemek istiyorum. Makroyu çalıştırdığımda, Çalışma Zamanı Hatası 13, Başlangıç Tarihi = 0'ı verir. Aşağıda kodum. Eğer Long
olarak StartDate
ve EndDate
ayarlarsanızExcel VBA - Bir tarih kümesinde bir tarih sütunu otomatik filtreleme
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
Kodunuzu kullanarak 'F8' kullanarak adım atmayı denediniz mi? Ayrıca, kodunuzda seçim yapmayı ve etkinleştirmeyi tercih ederim. [Bu yazı nasıl açıklıyor] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). Bu hatayı alıyorsunuz, çünkü bir tür uyuşmazlığı. – Dan
(1) Bir tarihi bir değişkene kaydetmek istiyorsanız, o zaman şöyle kaydedebilirsiniz: 'Dim StartDate As Date '. (2) Hata mesajı oldukça açık. Neden C2 hücresinin gerçekten geçerli bir tarih olup olmadığını kontrol etmiyorsunuz. (3) Bir tarih varsa bile ekleyerek onaylamak isteyebilirsiniz: Eğer IsDate (ThisWorkbook.Worksheets ("DateMaster"). Aralığı ("C2"). Değer) Daha sonra 'tarih ve atamadan önce' hata ayıklama .Print StartDate' sadece değişkeni atadıktan sonra. – Ralph
Dim Çalıştırma Başlangıcı olarak çalıştı, dizgi değil. Teşekkürler beyler!!! –