add-in ẩn các dòng trống, kèm file excel mẫu

Liên hệ QC

hellofinal

Thành viên mới
Tham gia
3/7/08
Bài viết
6
Được thích
2
Nghề nghiệp
fb.com/OliverTwistUSA
Add-in này có chức năng như sau: Ẩn đi các dòng còn trống để tiện cho việc xem hoặc in ấn. Ví dụ: Mỗi tháng có 1 sheet Nhật ký thu chi theo mẫu sẵn thống nhất. Người nhập liệu chỉ việc copy sheet mẫu để nhập cho tháng mới, và sẽ tạo ra nhiều dòng trống để nhập liệu vào, khi dữ liệu ít thì sẽ thừa các dòng trống này. Mỗi lần muốn xem hoặc in ấn thì phải xoá hoặc ẩn các dòng trống này.

Công thức của Add-in: Kiểm tra dữ liệu từng dòng của cột 1, nếu không có dữ liệu thì ẩn dòng đó (Cột 1 thường được dùng để đánh số thứ tự trong các bảng biểu). Phạm vi tác động: tất cả các sheet, và 1000 dòng đầu tiên của mỗi sheet.
 

File đính kèm

Add-in này có chức năng như sau: Ẩn đi các dòng còn trống để tiện cho việc xem hoặc in ấn. Ví dụ: Mỗi tháng có 1 sheet Nhật ký thu chi theo mẫu sẵn thống nhất. Người nhập liệu chỉ việc copy sheet mẫu để nhập cho tháng mới, và sẽ tạo ra nhiều dòng trống để nhập liệu vào, khi dữ liệu ít thì sẽ thừa các dòng trống này. Mỗi lần muốn xem hoặc in ấn thì phải xoá hoặc ẩn các dòng trống này.

Công thức của Add-in: Kiểm tra dữ liệu từng dòng của cột 1, nếu không có dữ liệu thì ẩn dòng đó (Cột 1 thường được dùng để đánh số thứ tự trong các bảng biểu). Phạm vi tác động: tất cả các sheet, và 1000 dòng đầu tiên của mỗi sheet.
hoàn toàn không có 1 câu hướng dẫn sử dụng. -+*/, mở file lên ngồi nhìn thôi**~**
 
code bạn sẽ sai nếu người ta chỉ nhập ở cột B không nhập ở cột A nhé. bạn nên thêm
Application.ScreenUpdating = False
.....code............
Application.ScreenUpdating = True
để tắt chức năng cập nhật màn hình nhé
sử dụng code này xem
Mã:
Dim Lr, Lc As String
Sub HideRows()
Application.ScreenUpdating = False
On Error Resume Next
Application.ScreenUpdating = False
Lr = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Lc = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
If Lr = 0 Then Exit Sub
For I = 1 To Lr
    For j = 0 To Lc - 1
    If Range("A1").Offset(I - 1, j).Value = "" Then
GoTo nexj
    Else
GoTo nexi
    End If
nexj:
    Next j
If j = Lc Then Rows(I).Hidden = True
nexi:
Next I
Application.ScreenUpdating = True
End Sub
Sub UnHideRows()
Application.ScreenUpdating = False
On Error Resume Next
Lr = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Rows("1:" & Lr).Hidden = False
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Do chưa soạn file hướng dẫn nên không kịp hướng dẫn. Giờ mình gửi file hướng dẫn sử dụng Add-in HideRows
 

File đính kèm

Add-in này có chức năng như sau: Ẩn đi các dòng còn trống để tiện cho việc xem hoặc in ấn. Ví dụ: Mỗi tháng có 1 sheet Nhật ký thu chi theo mẫu sẵn thống nhất. Người nhập liệu chỉ việc copy sheet mẫu để nhập cho tháng mới, và sẽ tạo ra nhiều dòng trống để nhập liệu vào, khi dữ liệu ít thì sẽ thừa các dòng trống này. Mỗi lần muốn xem hoặc in ấn thì phải xoá hoặc ẩn các dòng trống này.

Công thức của Add-in: Kiểm tra dữ liệu từng dòng của cột 1, nếu không có dữ liệu thì ẩn dòng đó (Cột 1 thường được dùng để đánh số thứ tự trong các bảng biểu). Phạm vi tác động: tất cả các sheet, và 1000 dòng đầu tiên của mỗi sheet.

1. Nếu đã có ý tặng hay chia sẽ thì không nên giấu code làm gì. Trên diễn đàn này gần như 99% thành viên đều biết cách xem code trong VBA
2. Nếu muốn ẩn dòng trống thì chỉ cần 1 câu lệnh duy nhất, dùng Specialcells thì có thể ẩn sạch các dòng trống. Cần chi tới 2 vòng For Next như bạn đang sử dụng.
 
1. Nếu đã có ý tặng hay chia sẽ thì không nên giấu code làm gì. Trên diễn đàn này gần như 99% thành viên đều biết cách xem code trong VBA
2. Nếu muốn ẩn dòng trống thì chỉ cần 1 câu lệnh duy nhất, dùng Specialcells thì có thể ẩn sạch các dòng trống. Cần chi tới 2 vòng For Next như bạn đang sử dụng.
2 vòng for là của em bác ơi. chứ đâu phải bác kia. em không biết Specialcells nên làm vậy thôi. đã nói thì làm phát coi chơi bác
 
2 vòng for là của em bác ơi. chứ đâu phải bác kia. em không biết Specialcells nên làm vậy thôi. đã nói thì làm phát coi chơi bác

Đây là mẫu bạn có thể tham khảo. Tùy biến thế nào thì tùy từng bài mà áp dụng.
PHP:
Sub Hide()
Selection.SpecialCells(4).EntireRow.Hidden = 1
End Sub
 
Đây là mẫu bạn có thể tham khảo. Tùy biến thế nào thì tùy từng bài mà áp dụng.
PHP:
Sub Hide()
Selection.SpecialCells(4).EntireRow.Hidden = 1
End Sub
tùy biến thế nào bác số 4 là sao. em chạy thử nó ẩn không còn 1 dòng dữ liệu nào luôn
 
tùy biến thế nào bác số 4 là sao. em chạy thử nó ẩn không còn 1 dòng dữ liệu nào luôn
Bôi đen chữ Specialcells -> F1 -> sẽ ra rất nhiều điều kiện cho bạn tham khảo, số 1, 2, 3....chỉ đơn giản là mã hoá của các tuỳ chọn (số 4 ở đây là Blank)
tạm dịch code của a Hải như sau: trong vung chọn, dòng nào có ký tự trống thì ẩn
 
Lần chỉnh sửa cuối:
to Cá ngừ F1
Mã:
Sub Hide()
Selection.SpecialCells(4).EntireRow.Hidden = 1
End Sub
code này có sai gì không? sao nó ẩn hết không chừa 1 dòng dữ liệu nào thế bác
với lại máy em cài off13 nên F1 cũng vô dụng đợi nó load 1 hồi mới có
code em tuy dở nhưng cũng chấp nhận được mà chỉ có 1 giá trị tại ô Z10000 vậy là nó duyệt qua 10000x26 ô mất hết 6s ẩn hết 9999 dòng
 
Lần chỉnh sửa cuối:
to Cá ngừ F1
Mã:
Sub Hide()
Selection.SpecialCells(4).EntireRow.Hidden = 1
End Sub
code này có sai gì không? sao nó ẩn hết không chừa 1 dòng dữ liệu nào thế bác
với lại máy em cài off13 nên F1 cũng vô dụng đợi nó load 1 hồi mới có
code em tuy dở nhưng cũng chấp nhận được mà chỉ có 1 giá trị tại ô Z10000 vậy là nó duyệt qua 10000x26 ô mất hết 6s ẩn hết 9999 dòng

Dùng SpecialCells thì phải có "lực" mới dùng được
Nói chung: Biết dùng thì dùng được, bằng ngược lại thì...
Bạn đưa dữ liệu của bạn lên đây sẽ biết liền
 

File đính kèm

Đây là mẫu bạn có thể tham khảo. Tùy biến thế nào thì tùy từng bài mà áp dụng.
PHP:
Sub Hide()
Selection.SpecialCells(4).EntireRow.Hidden = 1
End Sub
Đúng là code hay thật, mình có tìm hiểu thấy số 4 chính là Style Empty cells, còn EntireRow là gì vậy bạn có thể giải thích không?
 
đây thưa thầy. em chạy code mà nó ẩn hết trơn

Quan trọng nằm ở chỗ Selection ấy. Bạn đã chọn cái gì trước khi chạy code?
Theo như tôi biết thì Quang Hải dùng code trên để trả lời cho bài số 1. Mà code ở bài 1 người ta dựa vào điều kiện ở cột A để ẩn... vậy nên bạn phải chọn cột A trước khi chạy code mới đúng
Vậy đấy!
(còn dữ liệu bạn đưa lên chỉ là "linh tinh", chẳng có dấu hiệu gì có thể gọi đây là dữ liệu cả)
Đúng là code hay thật, mình có tìm hiểu thấy số 4 chính là Style Empty cells, còn EntireRow là gì vậy bạn có thể giải thích không?

Trời đất! Bạn viết cả đống AddIns hoành tráng thế kia, sao còn hỏi mấy chuyện đơn giản nhỉ? Dịch EntireRow ra tiếng Việt nó thế nào thì nó là.. thế ấy

-----------------------------

 
Lần chỉnh sửa cuối:
Trời đất! Bạn viết cả đống AddIns hoành tráng thế kia, sao còn hỏi mấy chuyện đơn giản nhỉ? Dịch EntireRow ra tiếng Việt nó thế nào thì nó là.. thế ấy

-----------------------------

Cảm ơn bác ndu96081631, mình viết chủ yếu là thủ công, tự học quay macro nhiều, còn những lệnh này chưa từng sử dụng bao giờ. Mấy hôm nay học hỏi nhiều từ bác ndu96081631.
 
Quan trọng nằm ở chỗ Selection ấy. Bạn đã chọn cái gì trước khi chạy code?
Theo như tôi biết thì Quang Hải dùng code trên để trả lời cho bài số 1. Mà code ở bài 1 người ta dựa vào điều kiện ở cột A để ẩn... vậy nên bạn phải chọn cột A trước khi chạy code mới đúng
Vậy đấy!
(còn dữ liệu bạn đưa lên chỉ là "linh tinh", chẳng có dấu hiệu gì có thể gọi đây là dữ liệu cả)

-----------------------------

thì đôi lúc người ta không thích nhập cột A mà nhập cột B cột C thì sao thầy. nếu code chạy ở cột B thì bị ẩn mất dữ liệu cột C rồi. có cái nào tổng quát hơn là quét hết vùng có dữ liệu rồi tìm dòng nào không có dữ liệu nào hết rồi ẩn đi không thầy
thêm 1 vấn đề nữa, trong file đính kèm tức là phải ẩn cột 16 18 nếu chạy code trên thì nó ẩn 1 2 3 4 6 11 16 18 19 vậy là sai rồi thầy, không lẽ mỗi lần ẩn lại phải chọn cột đó rồi chạy code, tốn mất 1 bước chọn cột mà lại ra sai. em muốn nó giới hạn vùng từ A5:H18 thì làm sao thầy
 

File đính kèm

Lần chỉnh sửa cuối:
thì đôi lúc người ta không thích nhập cột A mà nhập cột B cột C thì sao thầy. nếu code chạy ở cột B thì bị ẩn mất dữ liệu cột C rồi. có cái nào tổng quát hơn là quét hết vùng có dữ liệu rồi tìm dòng nào không có dữ liệu nào hết rồi ẩn đi không thầy
thêm 1 vấn đề nữa, trong file đính kèm tức là phải ẩn cột 16 18 nếu chạy code trên thì nó ẩn 1 2 3 4 6 11 16 18 19 vậy là sai rồi thầy, không lẽ mỗi lần ẩn lại phải chọn cột đó rồi chạy code, tốn mất 1 bước chọn cột mà lại ra sai. em muốn nó giới hạn vùng từ A5:H18 thì làm sao thầy

Như đã nói ở trên: Code của Quang Hải để trả lời cho bài 1 (mà bài 1 nó là như vậy)
Còn yêu cầu của bạn thì nó lại khác hoàn toàn với bài 1 rồi
Mà thật ra thì cái AddIn ở bài 1 gọi à ẩn dòng trống cũng không đúng! Chính xác là ẨN CÁC CELL TRỐNG TRONG CỘT A
 
thì đôi lúc người ta không thích nhập cột A mà nhập cột B cột C thì sao thầy. nếu code chạy ở cột B thì bị ẩn mất dữ liệu cột C rồi. có cái nào tổng quát hơn là quét hết vùng có dữ liệu rồi tìm dòng nào không có dữ liệu nào hết rồi ẩn đi không thầy
thêm 1 vấn đề nữa, trong file đính kèm tức là phải ẩn cột 16 18 nếu chạy code trên thì nó ẩn 1 2 3 4 6 11 16 18 19 vậy là sai rồi thầy, không lẽ mỗi lần ẩn lại phải chọn cột đó rồi chạy code, tốn mất 1 bước chọn cột mà lại ra sai. em muốn nó giới hạn vùng từ A5:H18 thì làm sao thầy

Code mình viết chỉ là mẫu cho các bạn nào thích nghiên cứu thì có thể thử nghiệm.
Với dạng dữ liệu của bạn thì sau này muốn thống kê hay truy xuất dữ liệu thì sẽ thấm thía được khó khăn là cái gì. Tin hay không thì tùy các bạn nhé.
 
Code mình viết chỉ là mẫu cho các bạn nào thích nghiên cứu thì có thể thử nghiệm.
Với dạng dữ liệu của bạn thì sau này muốn thống kê hay truy xuất dữ liệu thì sẽ thấm thía được khó khăn là cái gì. Tin hay không thì tùy các bạn nhé.
Vậy đặt pass làm chi vậy bạn, nghiêm cứu được gì, chắc là tập cho cách mở khóa file bạn nhỉ
xin lỗi nếu mấy vấn đề mình đặt ra không phù hợp với đề tài này. thành thật xin lỗi nhé.
 
Vậy đặt pass làm chi vậy bạn, nghiêm cứu được gì, chắc là tập cho cách mở khóa file bạn nhỉ
xin lỗi nếu mấy vấn đề mình đặt ra không phù hợp với đề tài này. thành thật xin lỗi nhé.

Mình có gởi file nào lên đâu mà bạn hỏi pass? Vui tính quá xá.
 
Web KT

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

Back
Top Bottom