Code tô màu cột N và cột J không tô đúng.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LuuAnh980

Thành viên tiêu biểu
Tham gia
28/9/22
Bài viết
455
Được thích
106
Giới tính
Nữ
Chào các anh chị !!!
Em có đoạn code như vầy:
Mã:
ws.Range("N6:N" & lr).Interior.color = RGB(255, 255, 0)
    ws.Range("J6:J" & lr).Interior.color = RGB(128, 207, 49)
và lastRow:
Mã:
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
LastRow lấy cột A,mà cột A em có dùng công thức: =CONCATENATE(D6,F6,H6) từ A6:A3000,
Sao code chạy thì lại tô màu cột N và cột J tới luôn dòng 3000, chứ không tới dòng cuối có dữ liệu ạ. Ví dụ như dữ liệu chỉ tới dòng 1200.
Mong các anh chị hướng dẫn.
 
Chào các anh chị !!!
Em có đoạn code như vầy:
Mã:
ws.Range("N6:N" & lr).Interior.color = RGB(255, 255, 0)
    ws.Range("J6:J" & lr).Interior.color = RGB(128, 207, 49)
và lastRow:
Mã:
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
LastRow lấy cột A,mà cột A em có dùng công thức: =CONCATENATE(D6,F6,H6) từ A6:A3000,
Sao code chạy thì lại tô màu cột N và cột J tới luôn dòng 3000, chứ không tới dòng cuối có dữ liệu ạ. Ví dụ như dữ liệu chỉ tới dòng 1200.
Mong các anh chị hướng dẫn.
Thay vì bạn nói thao thao bất tuyệt thì bạn cứ gửi thẳng cái file lên có khi xong rồi.Bạn sài công thức cho cột A từ A6 đến A3000 thì Lr nó là 3000 là đúng rồi.Còn muốn Lr = 1200 thì dựa vào cái cột nào mà bạn đang nhìn để nói nó là 1200 ấy
 
Upvote 0
Sao code chạy thì lại tô màu cột N và cột J tới luôn dòng 3000, chứ không tới dòng cuối có dữ liệu ạ. Ví dụ như dữ liệu chỉ tới dòng 1200.
Mong các anh chị hướng dẫn.
Thì chọn cột khác bạn. Có công thức thì hình như vẫn tính dòng cuối.
 
Upvote 0
Bạn lấy dòng cuối của cột A là 3000 gán vào cột J thì nó tới J3000 là phải rồi, bạn muốn đúng vị trí của cột J thì làm thêm cái biến tìm dòng cuối của cột J. Nói chung lên file mọi người mới biết được.
 
Upvote 0
Chào các anh chị !!!
Em có đoạn code như vầy:
Mã:
ws.Range("N6:N" & lr).Interior.color = RGB(255, 255, 0)
    ws.Range("J6:J" & lr).Interior.color = RGB(128, 207, 49)
và lastRow:
Mã:
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
LastRow lấy cột A,mà cột A em có dùng công thức: =CONCATENATE(D6,F6,H6) từ A6:A3000,
Sao code chạy thì lại tô màu cột N và cột J tới luôn dòng 3000, chứ không tới dòng cuối có dữ liệu ạ. Ví dụ như dữ liệu chỉ tới dòng 1200.
Mong các anh chị hướng dẫn.
Dòng cuối nghĩa dòng cuối cùng của bảng dữ liệu
 
Upvote 0
@Chủ bài đăng:
Dùng đoạn code dưới đây & chiêm nghiệm cho những lần gặp tương tự kế tiếp nữa nha

PHP:
Sub DongCuoi()
 Dim lR As Long, DCuoi As Long
 
 lR = 9 + ActiveSheet.UsedRange.Rows.Count
 DCuoi = Cells(lR, "N").End(xlUp).Row
 MsgBox DCuoi, , lR
 DCuoi = Cells(lR, "J").End(xlUp).Row
 MsgBox DCuoi, , lR
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thay vì bạn nói thao thao bất tuyệt thì bạn cứ gửi thẳng cái file lên có khi xong rồi.Bạn sài công thức cho cột A từ A6 đến A3000 thì Lr nó là 3000 là đúng rồi.Còn muốn Lr = 1200 thì dựa vào cái cột nào mà bạn đang nhìn để nói nó là 1200 ấy
Nếu cột N và cột J có công thức đã kéo tới dòng 3000 thì code tìm dòng cuối cũng sẽ lệnh cho tô hết đến dòng 3000 luôn.
 
Upvote 0
Em cám ơn mọi người đã hướng dẫn, vậy nếu lấy dòng cuối có công thức, thì công thúc tới đâu là dòng cuối tới đó ạ, cho dù công thức rổng. Em có thử code của Bác @SA_DQ thì báo như sau: Cột N là 3000, cột J là 1028. Và lại biết thêm là do cột N của em có công thức tới 3000,còn cột J là giá trị copy vào ạ. Vậy lấy Dòng cuối là cột J như vầy phải không ạ:
Mã:
lastRowJ = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
 
Upvote 0
Em cám ơn mọi người đã hướng dẫn, vậy nếu lấy dòng cuối có công thức, thì công thúc tới đâu là dòng cuối tới đó ạ, cho dù công thức rổng. Em có thử code của Bác @SA_DQ thì báo như sau: Cột N là 3000, cột J là 1028. Và lại biết thêm là do cột N của em có công thức tới 3000,còn cột J là giá trị copy vào ạ. Vậy lấy Dòng cuối là cột J như vầy phải không ạ:
Mã:
lastRowJ = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
Đã dùng code thì cột A cũng nên dùng code thay cho công thức luôn, công thức mà kéo sẵn 3000 dòng thì file cũng nặng và chạy chậm hơn nhiều.
 
Upvote 0
Đã dùng code thì cột A cũng nên dùng code thay cho công thức luôn, công thức mà kéo sẵn 3000 dòng thì file cũng nặng và chạy chậm hơn nhiều.
Đối với người này thì khuyên vô ích. Những file trước đây kéo công thức sẵn đến 10 ngàn, khuyên bao lần có nghe đâu.
 
Upvote 0
Đối với người này thì khuyên vô ích. Những file trước đây kéo công thức sẵn đến 10 ngàn, khuyên bao lần có nghe đâu.
Lúc đầu đọc bài 1 em cũng thắc mắc;
1. Nếu dùng VBA để chạy thì dùng luôn
PHP:
lr = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
sau đó dùng
PHP:
ws.Range("A6:A" & lr).FillDown
2. Mà vụ tô cả cột này nó cũng chỉ tổ nặng, cái nào cần thì dùng condition formatting thôi
 
Upvote 0
Nói về xlUp:
ws.Cells(ws.Rows.Count, "A").End(xlUp) tương đương với click chọn ô A1048576 nhấn Ctrl + mũi tên lên.
- Tại sao không phải 10 ngàn, 100 ngàn, ... theo dự kiến dữ liệu trong kỳ mà là 1 triệu?
- Tại sao không thử đứng tại đúng ô A1048576 nhấn Ctrl + mũi tên lên xem nó lên tới đâu? Nếu nó lên tới 3000 thì thử sang cột khác.

Mà thật ra không biết ý nghĩa của UsedRange, không biết ý nghĩa của xlUp, xlDown, ... mà chỉ copy code về xài thì chỉ tới mức đó mà thôi.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom