pham ha 94
Thành viên chính thức
- Tham gia
- 13/12/22
- Bài viết
- 86
- Được thích
- 6
Nghiên cứu cách tìm dòng cuối trong vba.Tại excel ô A1, A2, A3 có giá trị
Khi cần tham chiếu đến giá trị A2, A3 VBA sẽ dùng Range(“A2:A3”)
Khi excel insert thêm dòng, vùng A2:A3 sẽ thành A3:A4 nhưng công thức VBA vẫn không đổi
Nhờ các bác tư vấn giúp “Có cách nào để lúc insert thêm dòng sẽ không bị lỗi, giảm việc sửa code không?
View attachment 288013View attachment 288012
Bạn nên đưa file có dữ liệu cụ thể.Ý mình là nếu dưới dòng A2: A3 còn rất nhiều dòng nữa, tìm dòng cuối không có ý nghĩa gì cả
Ý chủ bài đây cơ mà.chưa hiểu ý.
Range(“A2:A3”) -> Range("A2:A"&Cells(Rows.Count, "A").End(xlUp).Row)
Ý mình là nếu dưới dòng A2: A3 còn rất nhiều dòng nữa, tìm dòng cuối không có ý nghĩa gì cả
Gán thử cho vùng, giả sử [A2:A3] 1 cái tên như "GPE"Tại excel ô A1, A2, A3 có giá trị
Khi cần tham chiếu đến giá trị A2, A3 VBA sẽ dùng Range(“A2:A3”)
Khi excel insert thêm dòng, vùng A2:A3 sẽ thành A3:A4 nhưng công thức VBA vẫn không đổi
Nhờ các bác tư vấn giúp “Có cách nào để lúc insert thêm dòng sẽ không bị lỗi, giảm việc sửa code không?
Nếu không ngại mất thời gian thì dùng Inputbox. Nhưng khuyên là không nên vì mỗi lần như vậy mất tầm 3s cuộc đời, làm nhiều lần thì cộng dồn lại cũng bỏ lỡ nhiều năm.Ý mình là nếu dưới dòng A2: A3 còn rất nhiều dòng nữa, tìm dòng cuối không có ý nghĩa gì cả
Cái này là do người ta chưa hiểu cách làm nên mới phát biểu như vậy. Nếu đưa dữ liệu lên xem cụ thể thế nào thì sẽ giải quyết được thôi màNếu không ngại mất thời gian thì dùng Inputbox. Nhưng khuyên là không nên vì mỗi lần như vậy mất tầm 3s cuộc đời, làm nhiều lần thì cộng dồn lại cũng bỏ lỡ nhiều năm.
Chưa rõ!!!Câu hỏi như vậy là rõ ràng rồi.
...
1. Chèn thủ công hay bằng code thì cũng vậy. Nếu chèn thủ công thì 2 sub và Biến "tam" khai báo publicChưa rõ!!!
1. Việc "chèn dòng" của thớt là thủ công hay do code chèn?
2. Nếu chèn dòng giữa range thì sao? Chọn rows + 1, hay chọn rows kể từ row1, hay row1+1?
3. Nếu không phải chèn mà là xóa thì sao?
Range là "a10:a11"2. Chèn tại dòng n (đứng tại dòng n để chèn). Chèn mấy dòng cũng được (m dòng). Ghi lại cho rõ là "Dùng phương thức find tìm ô có chứa giá trị biến "tam" trong cột A" từ dòng n trở xuống (lúc mới chèn xong thì activecell vẫn là dòng n, giá trị cũ của An bị đẩy xuống m dòng trắng.
Giả dụ dữ liệu không chuẩn & tham biến 'Tam' bị chứa 'RỔNG'Nếu chèn dòng tại dòng n:
Trước khi chèn: gán giá trị An vào 1 biến "tam" . . . . .
Dùng phương thức find tìm ô có chứa giá trị biến "tam" trong cột A
Anh nói đúng khi mở rộng vấn đề. Còn giải thuật của tôi dựa trên cái hình ở bài 1: Cột A không trùng.Range là "a10:a11"
a10 chứa "x"
a8 cũng chứa "x"
Anh nói cũng đúng. Nhưng hình bài 1 cho thấy nó có cái gì đó cần xóa, chứ không rỗng.Giả dụ dữ liệu không chuẩn & tham biến 'Tam' bị chứa 'RỔNG'
Thì câu này bập bênh lắm:
Cảm ơn bác,cách này e thấy đúng với mong muốn rồi ạGán thử cho vùng, giả sử [A2:A3] 1 cái tên như "GPE"
Mong phù hợp với iêu cầu của bạn!
Cảm ơn bác, Cách này, khi insert dòng thì VBA vẫn sẽ tự tìm name là đoạn A2:A3 thành A3:A4. rồiThực ra, nếu yêu cầu của thớt chỉ giản dị có vậy thì cách giản dị nhất là dùng Name. Khi chèn dòng, name se tự động tháy đổi.
Theo code của thớt, nếu thớt đặt name KhiMocKho = "[Sheet1}!$a$2:$a$3"
thì khi thêm dòng ở a1, KhiMoKho sẽ tự động thánh a3:a4
Cuối tuần vừa rồi, mình đi công tác bên Trung nên mạng nó xa tầm với quá.Chủ thớt hình như chẳng quan tâm gì mấy đến thớt của mình. Kể từ bài #3 là lặn mất không thấy sủi tăm.