Em mới mày mò học viết code chưa bao lâu mà cũng tự học là chính , còn gà mờ mong mọi người sửa lỗi giúp ạ . Trong file em gửi có 2 module là module 1 và module viết code theo 2 phương pháp khác nhau . Một module dùng autofilter thì khi bấm cập nhật bị lỗi cannot change part of a merge cell , phải bấm end rồi bấm cập nhật thì nó mới chạy . Một module dùng mảng thì mắc lỗi variable not define ở biến K . Mong mọi người xem và sửa giúp . Xin cảm ơn
Em mới mày mò học viết code chưa bao lâu mà cũng tự học là chính , còn gà mờ mong mọi người sửa lỗi giúp ạ . Trong file em gửi có 2 module là module 1 và module viết code theo 2 phương pháp khác nhau . Một module dùng autofilter thì khi bấm cập nhật bị lỗi cannot change part of a merge cell , phải bấm end rồi bấm cập nhật thì nó mới chạy . Một module dùng mảng thì mắc lỗi variable not define ở biến K . Mong mọi người xem và sửa giúp . Xin cảm ơn
1. Một module dùng autofilter thì khi bấm cập nhật bị lỗi cannot change part of a merge cell -> Bạn chọn hết sheet GHISO > Clear > Clear Formats 2. Một module dùng mảng thì mắc lỗi variable not define ở biến K -> Không chỉ biến K, mà còn nhiều biến khác. Lỗi do bạn chưa khai báo biến, kiểm tra và khai báo hết tất cả các biến.
1./ Vì trang 'GhiSo' đã là 1 CSDL chỉnh, nên bạn đang dư hàm tự tạo Tim_dong_cuoi
Nếu là mình thì mình sẽ viết như sau:
Dim Rws As Long
Rws = Sheets("GhiSo").[H2].CurrentRegion.Rows.Count
2./ Nên lưu ý thêm về cách đặt tên các tham biến, tên trang tính ngắn gọn & dễ nhìn hơn, ví dụ
Tên hàm tự tạo chỉ cần là TimDongCuoi(. . . , . . . ) hay InPNK hoặc GhiSo
3./ Câu lệnh của bạn (mà mình đã trích dẫn bên trên), nên xem lại vì:
Bạn đang thực hiện phi vụ Copy toàn bộ 19 cột của 1 trang tính sang form in, nhưng thiết kế trang để in này ít hơn nhiều so với tổng số cột nên trênĐừng nói là bạn sẽẩnđi sau Copy các cột sau cột 'L' hay 'M'đó nha!
4./ Khuyên bạn đừng xài câu lệnh
On Error Resume Next
một cách như vậy. Thay vào đó nên xài
On Error Goto LoiCT (LoiCT là 1 nhãn để sau nhãn này ta phân biệt đó là lỗi gì & lỗi nào có thể bỏ qua & lỗi nào có thể phải dừng chương trình.
Mình xin ví dụ:
Mã:
Function TimDongCuoi(Sh As Worksheet, Col As String)
On Error GoTo LoiCT
TimDongCuoi = Sh.Range(Col & Rows.Count).End(xlUp).Row
Err_: Exit Function
LoiCT:
If Err = 13 Then
Resume Next
Else
MsgBox Err
GoTo Err_
End If
End Function