Code Đếm số dòng ẩn (entirerow.hidde) ?

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Chào các bạn! Nhờ các bạn viết giúp tôi code đếm số dòng ẩn (tôi không biết việc đếm dòng ẩn bằng Autofilter và dòng ẩn bằng thủ công có gì khác nhau không ?). Lưu ý: trong dòng ẩn có thể là trống hoặc có dữ liệu.
 

File đính kèm

Bạn thử cách lập luận loằng ngoằng của mình xem sao. Excel không có cách xác định vùng ẩn nhưng lại có cách xác định vùng nhìn thấy. Vậy sao ta không đếm dòng nhì thấy rồi lấy 56536 trừ đi số dòng nhìn thấy. Bạn xem code của mình xem có chơi được không

PHP:
Sub thu()
Dim rg As Range
Set rg = Sheet2.Cells.SpecialCells(xlCellTypeVisible)
 For i = 1 To rg.Areas.Count
 dg = dg + rg.Areas(i).Rows.Count
 Next
MsgBox 65536 - dg
End Sub
Xong rồi mới thấy còn EntireRow bạn sử lý tiếp nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Để chính xác hơn bạn thay giùm dòng lệnh sau

PHP:
Set rg = Sheet2.Cells.SpecialCells(xlCellTypeVisible)

bằng dòng lệnh:

PHP:
Set rg = Sheet2.Columns("B:B").SpecialCells(xlCellTypeVisible)

Thông cảm nha
 
Upvote 0
Cảm ơn sealand ! tôi test code của bạn OK rồi.
và cho tôi xin hỏi thêm:
- Tại sao tôi không khai biến, không Set mà code vẫn chạy bình thường ? (tôi thường bỏ qua phần này mặc dù biết đó là thói quen không tốt).

PHP:
Sub Macro1()
   With Sheet2.[a:a].SpecialCells(12)
      For i = 1 To .Areas.Count
        temp = temp + .Areas(i).Rows.Count
      Next
        MsgBox 65536 - temp
   End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Gán 1 giá trị ban đầu cho 1 biến, cũng là 1 cách khai báo biến.
Thí dụ:
- For i = 1 to .Areas.Count: biến i đã được khai báo long
- Lenght1 = Len(MyStr) : biến Length1 đã được khai báo biến long.
- MyValue = Cells(1,1): Biến MyValue sẽ cùng loại với giá trị ô A1
- IsNum = IsNumeric(MyStr) hoặc IsNum = True: IsNum được khai báo biến boolean
- Extract = Left(MyValue, 2): Extract đã được khai báo biến String
- ...

Cái dở của việc không khai báo biến trước nằm ở chỗ ta sẽ không tận dụng được cái auto check của VBA.
 
Upvote 0
Chào các bạn! Nhờ các bạn viết giúp tôi code đếm số dòng ẩn (tôi không biết việc đếm dòng ẩn bằng Autofilter và dòng ẩn bằng thủ công có gì khác nhau không ?). Lưu ý: trong dòng ẩn có thể là trống hoặc có dữ liệu.
Anh thử code này xem:
PHP:
Sub Test()
  Dim Rng As Range
  Set Rng = Selection
  MsgBox Rng.Count - Rng.SpecialCells(12).Count
End Sub
 
Upvote 0
Không ổn rồi Ndu à,
Set Rng = Selection

Rng.Count----> Nó trả về 1 tức là cả sheet


Rng.SpecialCells(12).Count---> Nó trả về 16.770.816=256X65511-->Số cell trong vùng nhìn thấy

MsgBox Rng.Count - Rng.SpecialCells(12).Count --->Kết quả = - 16.770.815

Lần đầu thấy Ndu sai sót chút (Phai la 25 moi dung).


To Trung Chinh:
Trước khi viết Code bạn thêm dòng này sẽ thấy khác biệt
Option Explicit
Để sửa thói quen của bạn làm như sau:
Trong cửa sổ VBA-->Tools-->Options-->Thẻ Editor-->Chọn hộp kiểm: Require Variable Declaration-->OK
Lần sau bạn không khai báo nó sẽ nhắc nhở bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Không ổn rồi Ndu à,
Set Rng = Selection

Rng.Count----> Nó trả về 1 tức là cả sheet


Rng.SpecialCells(12).Count---> Nó trả về 16.770.816=256X65511-->Số cell trong vùng nhìn thấy

MsgBox Rng.Count - Rng.SpecialCells(12).Count --->Kết quả = - 16.770.815

Lần đầu thấy Ndu sai sót chút (Phai la 25 moi dung).
.
Đâu có anh!
Em nêu thuật toán chung để làm theo file giả lập của anh Trung Chính thôi mà
Thuật toán ấy là:
- Số dòng ẩn = Tổng số dòng - Số dòng đang hiện
Đương nhiên đang nói Selection = 1 cột
Nếu Selection của anh gồm nhiều cột thì anh Resize lại
Tóm lại em muốn không dùng vòng lập!
---------
Ngoài ra, nếu Selection là bao gồm nhiều vùng không liên tục thì trả về 1 bài toán phụ: XÁC ĐỊNH VÙNG LỚN GỒM CÁC VÙNG NHỎ ---> Mà bài này đã có đăng trên diển đàn rồi (nhớ không lầm là của sư phụ SA_DQ)
 
Lần chỉnh sửa cuối:
Upvote 0
@ Seland ! code của ndu OK mà. Nếu "ăn gian" thì chỉ cần thế này cũng OK.
PHP:
Sub Test()
MsgBox [a:a].Count - [a:a].SpecialCells(12).Count
End Sub
P/s để tìm dòng ta chỉ cần chọn 1 cột bất kỳ (tôi chọn đại cột A)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom