VBA Ẩn dòng vùng dữ liệu, khi nhập liệu dòng i thì dòng i+1 hiện.. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

jacky_police

Thành viên chính thức
Tham gia
30/7/07
Bài viết
54
Được thích
4
Xin chào các bác. Em có file nhập dữ liệu trong vùng từ A7:G110, do dữ liệu có dòng cộng phát sinh cuối nên mỗi khi muốn in lại phải ẩn dòng thừa hoặc không có dữ liệu rất bất tiện.
Vậy, Nhờ các bác GPE viết giúp cho đoạn code ẩn dòng rỗng theo nguyên lý: Nếu cell A7:A110 không có dữ liệu thì ẩn từ cell A8:A110, khi em nhập dữ liệu và cell A7 thì dòng A8 hiện, nhập vào cell A8 thì dòng A9 hiện lần lượt như vậy nếu em nhập liệu tới dòng 109 thì dừng.
Nhờ các bác viết cho code giúp em.
Em xin chân thành cảm ơn!
 

File đính kèm

Bật chức năng ghi macro lên trong khi Auto Filter A7:A110 với điều kiện <>"" là xong.
Vấn đề là muốn ẩn dòng chưa nhập liệu. Khi nhập liệu dòng 1 thì dòng 2 hiện, nhập dòng 2 thì dòng 3 hiện để nhập tiếp dòng 3 dòng 4 hiện và in luôn.
Làm thủ công thì mình vẫn làm được.
 
PHP:
Sub Gioi_Danh()
    With Sheet1
        .Range("$A$7:$A$110").AutoFilter Field:=1, Criteria1:="<>"
        .Range("A1:H114").PrintOut
        .AutoFilterMode = False
    End With
End Sub
"Giời đánh" hehe.. Vãi quá.....
Em vừa lang thang trên 4fum kiếm được đoạn code chèn và xoá dòng.. đưa vào file của em sửa lại bị một số lỗi như cột TT nhảy vào cột ngày tháng, dòng tổng cộng nhảy lung tung. Bác sửa lại giúp em với.
Thank bác!
 

File đính kèm

Lần chỉnh sửa cuối:
(1) Vấn đề là muốn ẩn dòng chưa nhập liệu. Khi nhập liệu dòng 1 thì dòng 2 hiện, nhập dòng 2 thì dòng 3 hiện để nhập tiếp dòng 3 dòng 4 hiện và in luôn.
Làm thủ công thì mình vẫn làm được.
(2) Em vừa lang thang trên 4fum kiếm được đoạn code chèn và xoá dòng.. đưa vào file của em sửa lại bị một số lỗi như cột TT nhảy vào cột ngày tháng, dòng tổng cộng nhảy lung tung. Bác sửa lại giúp em với.
(1) Làm vậy cũng được nhưng chưa hay!
Nêu là vầy:
B1: Ta nên đẩy dòng 19 (file #5) xuống fía dưới nào đó tùy thuộc vô số lần ghi dòng lớn nhất năm trước cộng thêm 300; Ví dụ năm trước chỉ xài 400 dòng thì dẩy nó xuống dòng 700;
B2: Nhập thêm dòng mới hàng ngày, ví dụ đang nhập đến dòng 13 ngày hôm nay
B3: Viết vài dòng lệnh để ẩn các dòng từ 15: 699 đi
B4: Viết thêm macro sự kiện chạy khi mở trang tính 'NKC' này; Nội dung như sau:
B4.1: Xác định dòng cuối cột [A:a] có dữ liệu; (ví dụ là dòng 13)
B4.2: Cho hiện dòng [15:15] lên (để bạn nhập liêu)

(2) Macro đó không nên sửa; Mà bạn nên mô tả kỹ công việc của bạn, có người sẽ viết mới theo mô tả cho bạn!
Không thể sửa vì bạn chưa mô tả công việc của bạn để mọi người hiểu ngon ngành!
 
Về cơ bản đó là nội dung tôi đưa lên bài này. Dòng dữ liệu muốn ẩn là từ dòng 8 đến dòng 109 (số dòng có thể nhiều hơn 109), Khi không có dữ liêu thì ẩn từ dòng 8 đến 109, nhập liệu vào dòng 7 thì dòng 8 hiện, 8 thì dòng 9 hiện.... (có thể dựa vào 1 cột nào đó để lấy điều kiện khi nhập dữ liệu vào cột đó là code hiểu để hiện dòng tiếp theo, ví dụ cột B, C hoặc D, cột A làm cột số TT có thể dung công thức)
Còn theo SA_DQ cũng hợp lý
 
Về cơ bản đó là nội dung tôi đưa lên bài này. Dòng dữ liệu muốn ẩn là từ dòng 8 đến dòng 109 (số dòng có thể nhiều hơn 109), Khi không có dữ liêu thì ẩn từ dòng 8 đến 109, nhập liệu vào dòng 7 thì dòng 8 hiện, 8 thì dòng 9 hiện.... (có thể dựa vào 1 cột nào đó để lấy điều kiện khi nhập dữ liệu vào cột đó là code hiểu để hiện dòng tiếp theo, ví dụ cột B, C hoặc D, cột A làm cột số TT có thể dung công thức)
Còn theo SA_DQ cũng hợp lý
Bạn xem file, nhập vào B8 sẽ hiện dòng 9, ...
 

File đính kèm

Bạn xem file, nhập vào B8 sẽ hiện dòng 9, ...
Bản này về cơ bản đã đáp ứng như em nêu ra. Tuy nhiên, vấn đề em không nghĩ đến và bản của anh Ba Tê là khi muốn xoá dữ liệu ở dòng 8 thì nó lại ẩn dữ liệu ở dòng 9, trong khi dòng muốn ẩn ở đây là dòng vừa xoá dữ liệu (dòng 8).
Các bác nghiên cứu xử lý vấn đề này giùm em với.
Cảm ơn các bác đã quan tâm!
 
Bạn xem file, nhập vào B8 sẽ hiện dòng 9, ...
Em sửa đoạn code này: Cells(R + 1, 1).EntireRow.Hidden = True thành
Cells(R, 2).EntireRow.Hidden = True
giải quyết được vấn đề xoá dòng 8 ẩn dòng 9, tuy nhiên dòng số tiền nó liên quan tới dòng cộng tổng phát sinh. Do vậy, theo em nên cần điều kiện phải cells(R,5) không có dữ liệu thì dòng đó mới ẩn. (Cells(R,2) and Cells(R,5) = 0 then hidden=true.
Đoạn này phức tạp quá em không biết kết hợp điều kiện thế nào vậy nhờ các bác sửa giúp em!
 

File đính kèm

Em sửa đoạn code này: Cells(R + 1, 1).EntireRow.Hidden = True thành
Cells(R, 2).EntireRow.Hidden = True
giải quyết được vấn đề xoá dòng 8 ẩn dòng 9, tuy nhiên dòng số tiền nó liên quan tới dòng cộng tổng phát sinh. Do vậy, theo em nên cần điều kiện phải cells(R,5) không có dữ liệu thì dòng đó mới ẩn. (Cells(R,2) and Cells(R,5) = 0 then hidden=true.
Đoạn này phức tạp quá em không biết kết hợp điều kiện thế nào vậy nhờ các bác sửa giúp em!
Tôi thường trả lời 1 lần, như bài #8 là theo yêu cầu bài #7
"Khi không có dữ liêu thì ẩn từ dòng 8 đến 109, nhập liệu vào dòng 7 thì dòng 8 hiện, 8 thì dòng 9 hiện.... (có thể dựa vào 1 cột nào đó để lấy điều kiện khi nhập dữ liệu vào cột đó là code hiểu để hiện dòng tiếp theo, ví dụ cột B, C hoặc D, cột A làm cột số TT có thể dung công thức)"
Những trường hợp "nếu" thì tôi ít quan tâm vì không thể dự đoán hết các "nếu".
 
Web KT

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

Back
Top Bottom