Bạn tham khảo các macro để xóa dòng trống tại: http://webketoan.vn/forum/showthread.php?t=48089Có ai biết code làm ẩn hiện dòng trống trong excel bằng VBA không giúp em với. Em lập trình ứng dụng kế toán nhưng phải để lại dòng trống. Khi in ra sẽ có dòng trống lên em muốn dòng đó sẽ ẩn đi sau khi chạy bằng VBA!
Cái này giải quyết được ý của mình nhưng chưa ổn ở chỗ nếu vùng cần ẩn nhiều dòng quá (khoảng vài nghìn dòng thì vòng for chạy hơi lâu, nó cứ ẩn từng dòng một.bạn dùng lệnh vba sau đây nhé:
for i =1 to 5' có thể thay đổi 5 bằng bao nhiêu tùy bạn
if sheets("sheet1").Range("a1:c5").Cells(i, 1)="" then
sheets("sheet1").Range("a1:c5").Cells(i, 1).EntireRow.Hidden = True
end if
next i
'chúc bạn thành công
Sub Macro2()
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
Macro của bạn cần có thể là vầy:
Mã:Sub Macro2() Columns("A:A").Select Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
Option Explicit
[B]Sub Macro2()[/B]
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
[B]End Sub[/B]
(1) Hình như macro bạn SA_DQ đưa ra bị lỗi gì đó không chạy được. Mình thử làm rồi nhưng không được.
(..) File mẫu mình gửi làm ví dụ nhé. Vì mình không biết được số người sẽ là bao nhiêu nhưng mình dự kiến tối đa không quá 20 nên để sẵn 20 dòng để sẵn đấy (thực tế số này lên tới vài chục nghìn). Do khi số người không đủ dòng mà phải ẩn đi để lấy phần Người lập biểu / Lãnh đạo và một số nội dung soạn sẵn ở dưới... nên phải ẩn các dòng trống từ 8 đến 21.
(2) Mình đọc tài liệu thì thấy có Range().Cells(8:21).entr....hidden gì gì đó là làm được việc ẩn nhưng họ lại chỉ hướng dẫn truyền tham số dòng phía sau: Cells("B8:B"&i) trong đó i là số dòng cuối. Tuy nhiên mình áp dụng truyền tham số i để làm dòng bắt đầu ẩn là Cells("B"&i&":B21") thì không được và báo lỗi.
SA_DQ biết thì hướng dẫn mình luôn nhé?
Quá tuyệt vời ngoài cả sự mong đợi bác SA_QD à. E cũng đã mày mò làm được nhưng lệnh hơi dài chứ không ngắn gọn, xúc tích như của bác. Bác giải thích rõ thêm về câu lệnh giúp e được không?
Sub HiddRows()
Range([B1].End(xlDown).Offset(1), [c2].End(xlDown).Offset(, -1)).Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
Sub UnhiddenRows()
Sheet1.UsedRange.EntireRow.Hidden = False
End Sub
[B1].End(xlDown).Offset(1)
[c2].End(xlDown).Offset(, -1))
PHP:Sub HiddRows() Range([B1].End(xlDown).Offset(1), [c2].End(xlDown).Offset(, -1)).Select Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
Mã:Sub UnhiddenRows() Sheet1.UsedRange.EntireRow.Hidden = False End Sub
Là ô trống đầu tiên liền kề với ô cuối cột chứa dữ liệu;Mã:[B1].End(xlDown).Offset(1)
Là ô bên trái liền kề với ô cuối của cột [C] chứa dữ liệuMã:[c2].End(xlDown).Offset(, -1))
Toàn câu lệnh là ta ra lệnh chọn vùng thuộc cột bắt đầu từ dòng không dữ liệu của cột đến dòng không dữ liệu của cột [C]
Câu lệnh sau là vùng được chọn này sẽ ẩn đi nếu ô nào đó trong vùng không chứa dữ liệu.
;
Còn macro khuyến mãi: Hiện (Không ẩn) hết thẩy các dòng đã sử dụng.
Ðề: Sẵn lòng thôi
PHP:Sub HiddRows() Range([B1].End(xlDown).Offset(1), [c2].End(xlDown).Offset(, -1)).Select Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
Mã:Sub UnhiddenRows() Sheet1.UsedRange.EntireRow.Hidden = False End Sub
Là ô trống đầu tiên liền kề với ô cuối cột chứa dữ liệu;Mã:[B1].End(xlDown).Offset(1)
Là ô bên trái liền kề với ô cuối của cột [C] chứa dữ liệuMã:[c2].End(xlDown).Offset(, -1))
Toàn câu lệnh là ta ra lệnh chọn vùng thuộc cột bắt đầu từ dòng không dữ liệu của cột đến dòng không dữ liệu của cột [C]
Câu lệnh sau là vùng được chọn này sẽ ẩn đi nếu ô nào đó trong vùng không chứa dữ liệu.
;
Còn macro khuyến mãi: Hiện (Không ẩn) hết thẩy các dòng đã sử dụng.
bạn ơi, bạn có thể hướng dẫn mình file này được ko ? cảm ơn bạn nhiềuÐề: Ẩn hiện dòng trống bằng VBA trong excel
Hình như macro bạn SA_DQ đưa ra bị lỗi gì đó không chạy được. Mình thử làm rồi nhưng không được. File mẫu mình gửi làm ví dụ nhé. Vì mình không biết được số người sẽ là bao nhiêu nhưng mình dự kiến tối đa không quá 20 nên để sẵn 20 dòng để sẵn đấy (thực tế số này lên tới vài chục nghìn). Do khi số người không đủ dòng mà phải ẩn đi để lấy phần Người lập biểu / Lãnh đạo và một số nội dung soạn sẵn ở dưới... nên phải ẩn các dòng trống từ 8 đến 21. Mình đọc tài liệu thì thấy có Range().Cells(8:21).entr....hidden gì gì đó là làm được việc ẩn nhưng họ lại chỉ hướng dẫn truyền tham số dòng phía sau: Cells("B8:B"&i) trong đó i là số dòng cuối. Tuy nhiên mình áp dụng truyền tham số i để làm dòng bắt đầu ẩn là Cells("B"&i&":B21") thì không được và báo lỗi.
SA_DQ biết thì hướng dẫn mình luôn nhé?
Bạn có thể hướng dẫn giúp mình file này được ko? cảm ơn bạn rất nhiềuÐề: Sẵn lòng thôi
PHP:Sub HiddRows() Range([B1].End(xlDown).Offset(1), [c2].End(xlDown).Offset(, -1)).Select Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
Mã:Sub UnhiddenRows() Sheet1.UsedRange.EntireRow.Hidden = False End Sub
Là ô trống đầu tiên liền kề với ô cuối cột chứa dữ liệu;Mã:[B1].End(xlDown).Offset(1)
Là ô bên trái liền kề với ô cuối của cột [C] chứa dữ liệuMã:[c2].End(xlDown).Offset(, -1))
Toàn câu lệnh là ta ra lệnh chọn vùng thuộc cột bắt đầu từ dòng không dữ liệu của cột đến dòng không dữ liệu của cột [C]
Câu lệnh sau là vùng được chọn này sẽ ẩn đi nếu ô nào đó trong vùng không chứa dữ liệu.
;
Còn macro khuyến mãi: Hiện (Không ẩn) hết thẩy các dòng đã sử dụng.