Thầy giúp em. Sao em không lọc được dữ liệu . Đây là đoạn code :
Sub Loc_ngay()
Dim Dongcuoi As Long
Dongcuoi = Sheets("week36").Range("A" & Rows.Count).End(xlUp).Row
'Gan bien de loc ngay
Dim TuNgay As Long
Dim DenNgay As Long
TuNgay = CLng(Range("C3").Value)
DenNgay = CLng(Range("C4").Value)
'Thao tac loc ngay
ActiveSheet.Range("$A$1:$I$18" & Dongcuoi).AutoFilter Field:=1, Criteria1:=">=" & TuNgay, Operator:=xlAnd, Criteria2:="<=" & DenNgay
End Sub
Đoạn code này bạn viết chưa đúng (chú ý phần in đậm):
ActiveSheet.Range("$A$1:$I$18" & Dongcuoi).AutoFilter Field:=1, Criteria1:=">=" & TuNgay, Operator:=xlAnd, Criteria2:="<=" & DenNgay
Cần bỏ số 18 đi, vì bạn đã đưa biến dòng cuối vào thay cho dòng 18 rồi mà. Ngoài ra các dấu $ cũng không cần thiết trong cách viết Range của VBA. Mình sửa lại như sau:
ActiveSheet.Range("A1:I" & Dongcuoi).AutoFilter Field:=1, Criteria1:=">=" & TuNgay, Operator:=xlAnd, Criteria2:="<=" & DenNgay
dạ em cảm ơn thầy. Nếu mình muốn protect sheet mà phần điền ngày để filter vẫn có thể điền được. Mình phải làm sao vậy thầy ?
Chào bạn bạn unprotect ra trước khi chạy code rồi lại protect lại nhé.
làm sao mà mấy nút assigned macro chạy được khi đã protect sheet vậy thầy ?
Chào bạn trong code chạy bạn mở khoá ra rồi chạy code xong khoá lại nhé.