Excel интерпретирует дату как длинную переменную. Если ваш формат данных не совпадает с (En) форматом данных по умолчанию, у вас могут быть проблемы с соответствием. Так что используйте Clng (Ваша дата). Попробуйте пожалуйста следующий код. Это касается только фильтрующей части:
Sub CopyDataBasedOnDate()
Dim StartDate As Date
Dim EndDate As Date
Dim MainWorksheet As Worksheet
StartDate = Worksheets("Macro").Range("j8").Value
EndDate = Worksheets("Macro").Range("j9").Value
Set MainWorksheet = Worksheets("RawData")
MainWorksheet.Range("a4").CurrentRegion.Sort _
key1:=MainWorksheet.Range("a4"), order1:=xlAscending, _
Header:=xlYes
MainWorksheet.Range("a4").CurrentRegion.AutoFilter field:=1, _
Criteria1:=">=" & CLng(StartDate), Operator:=xlAnd, _
Criteria2:="<=" & CLng(EndDate), Operator:=xlFilterValues
End Sub