Code ẩn dòng trống!!!

  • Thread starter Thread starter anhbatt
  • Ngày gửi Ngày gửi
Liên hệ QC

anhbatt

Thành viên mới
Tham gia
27/10/09
Bài viết
38
Được thích
2
Chào các bạn!
Tôi có đoạn code làm ẩn các dòng trống trong một vùng dữ liệu A4:L25, trong đó có các dòng trống. tôi muốn ẩn nó đi để tiện cho việc in ấn (khỏi phải vào in khu vực....),
các bạn xem coi nó bị lỗi gì vậy?

Mã:
Sub an_dong()
 Dim r As Integer
   Sheets("sheet2").Select  
   For i = 4 To 25 'Step 1   'kiem tra xem từ dòng 4 đến dòng 24 neu o A4 ... A25 trống thì 
                                                                     ẩn luon dong chứa ô đó
     If Sheets("sheet2").Cells(i, 1).Value = "" Then
            Sheets("sheet2").Rows("i:i").EntireRow.Hidden = True
        End If
    Next
End Sub
 
Chào thầy ndu...
Tôi đã tải file của thầy về chạy thử thì rất là ok.
Nhưng tôi xem code có phần chưa hiểu là đoạn code thầy viết ở sheet1 và trước đó phải có "Option Explicit" {có nghĩa là gì vậy}, tôi thử xoá nó đi thì không chạy code.
Nếu mình viết trong module thì "Option Explicit" viết ở đâu trong sub ạ?
Thầy có thể giải thích 2 dòng lệnh mà tôi đã tô màu đỏ không ạ?
cảm ơn thầy rất nhiều!!!!!!!

PHP:
Private Sub CommandButton1_Click()
  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")                 *            
  CommandButton1.Caption = IIf(Check, "Show", "Hide")     **
  With Sheet1.Range("A3:A25")
    If Check Then
      .AutoFilter 1, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
Xem file
Nói chung yêu cầu dạng này không nên dùng vòng lập ---> Vài chục ngàn dòng thì code chạy đến bao giờ?[/QUOTE]
 
Upvote 0
Cần ẩn những dòng trống

Cần ẩn những dòng trống trong cột C - Em làm hoài không được nhờ ANh chị Giúp em nhe
 

File đính kèm

Upvote 0
Cần ẩn những dòng trống trong cột C - Em làm hoài không được nhờ ANh chị Giúp em nhe
Thử chạy code này vào file, tôi dùng Autofilter :
PHP:
Private Sub CommandButton1_Click()
With Sheets("BangLuong")
    .AutoFilterMode = fale
    .[C3:C383].AutoFilter 1, "<>"
End With
End Sub


Private Sub CommandButton2_Click()
  Sheets("BangLuong").[C3:C383].AutoFilter
End Sub
 
Upvote 0
Anh ơi. khi em in ra thì nó hiện cái nút " Loc " "khong Loc" làm thế nào để ẩn cái nút đó khi in vậy? tks ạ
 
Upvote 0
Anh ơi. khi em in ra thì nó hiện cái nút " Loc " "khong Loc" làm thế nào để ẩn cái nút đó khi in vậy? tks ạ
Bạn kéo cái nút lệnh ấy sang vùng không in.
Với Excel 2007 , 2010
Kích vào thẻ Deverloper\Design mode\kích vào cái nút lọc kéo ra chỗ khác
Với Excel 2003
Design mode\kích vào cái nút lọc kéo ra chỗ khác. Với biểu tượng Design mode trong thanh công cụ: Control Toolbox
 
Lần chỉnh sửa cuối:
Upvote 0
help

Ah... Ah... Tôi biết nguyên nhân rồi, đúng như bạn concogia đã nói, nếu A25 chưa có dử liệu thì dòng này sẽ không ẩn ---> Đây là hạn chế của SpecialCells đã từng đề cập trên diển đàn rồi
Vậy ta dùng AutoFilter nhé ---> Yêu cầu là phải có 1 tiêu đề nằm phía trên
PHP:
Private Sub CommandButton1_Click()
  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")
  CommandButton1.Caption = IIf(Check, "Show", "Hide")
  With Sheet1.Range("A3:A25")
    If Check Then
      .AutoFilter 1, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
Xem file
Nói chung yêu cầu dạng này không nên dùng vòng lập ---> Vài chục ngàn dòng thì code chạy đến bao giờ?

Chào anh ndu...

Code của anh hay quá, em đã thử với cell công thức với trường hợp trả về ="". OK.
em muốn sửa lại yêu cầu một chút nhờ anh hỗ trợ...em muốn để code chạy tự động mà không sử dụng button có được không ạ?

Thanks!
 
Upvote 0
Tự động ẩn dòng khi giá trị =0

Cách dùng một command như của bác Phongganhhoa cũng rất hay, như em muốn hỏi: nếu không dùng một nút command để ẩn hiện có được không ạ ? Em em nhờ các Bác giúp em với. Em xin cảm ơn các Bác trước !!!
 

File đính kèm

Upvote 0
Ah... Ah... Tôi biết nguyên nhân rồi, đúng như bạn concogia đã nói, nếu A25 chưa có dử liệu thì dòng này sẽ không ẩn ---> Đây là hạn chế của SpecialCells đã từng đề cập trên diển đàn rồi
Vậy ta dùng AutoFilter nhé ---> Yêu cầu là phải có 1 tiêu đề nằm phía trên
PHP:
Private Sub CommandButton1_Click()
  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")
  CommandButton1.Caption = IIf(Check, "Show", "Hide")
  With Sheet1.Range("A3:A25")
    If Check Then
      .AutoFilter 1, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
Xem file
Nói chung yêu cầu dạng này không nên dùng vòng lập ---> Vài chục ngàn dòng thì code chạy đến bao giờ?
Cho em hỏi .AutoFilter 1 có nghĩa là gì vậy thầy.
 
Upvote 0
Nghĩa là Autofilter cột 1 (cột đầu tiên) trong Range đã chọn đó bạn.
Cho em hỏi tiếp:
1. Autofilter cột 1 (cột đầu tiên), vậy có phải là cột A không anh.
2. Như theo file thì ẩn những dòng trống cột A. Em thử sửa code lại là cột B. Code như sau:
Private Sub CommandButton1_Click() Dim Check As Boolean
Check = (CommandButton1.Caption = "Hide")
CommandButton1.Caption = IIf(Check, "Show", "Hide")
With Sheet1.Range("B3:B25")
If Check Then
.AutoFilter 2, "<>", , , False
Else
.Parent.ShowAllData
End If
End With
End Sub
Sau lại bị lỗi anh giải thích dùm em nhé.
 
Upvote 0
Cho em hỏi tiếp:
1. Autofilter cột 1 (cột đầu tiên), vậy có phải là cột A không anh.
2. Như theo file thì ẩn những dòng trống cột A. Em thử sửa code lại là cột B. Code như sau:

Sau lại bị lỗi anh giải thích dùm em nhé.

Bạn sửa lại Range là được:

Mã:
Private Sub CommandButton1_Click()  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")
  CommandButton1.Caption = IIf(Check, "Show", "Hide")
  With Sheet1.Range("[COLOR=#ff0000]A3:B25[/COLOR]")
    If Check Then
      .AutoFilter 2, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
 
Upvote 0
Ah... Ah... Tôi biết nguyên nhân rồi, đúng như bạn concogia đã nói, nếu A25 chưa có dử liệu thì dòng này sẽ không ẩn ---> Đây là hạn chế của SpecialCells đã từng đề cập trên diển đàn rồi
Vậy ta dùng AutoFilter nhé ---> Yêu cầu là phải có 1 tiêu đề nằm phía trên
PHP:
Private Sub CommandButton1_Click()
  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")
  CommandButton1.Caption = IIf(Check, "Show", "Hide")
  With Sheet1.Range("A3:A25")
    If Check Then
      .AutoFilter 1, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
Xem file
Nói chung yêu cầu dạng này không nên dùng vòng lập ---> Vài chục ngàn dòng thì code chạy đến bao giờ?

Code của anh rất hay, Cám ơn anh rất nhiều. Nhưng có 1 điều mình cần hỏi là vì sao khi chạy đoạn code này rồi và sau đó thay đổi vùng cần ẩn thì lại không được. Như trên thì khi chạy code để ẩn vùng A3:A25 rồi thì sau đó thay đổi lại thành A3:A10 hoặc A3:A260 không được, nó vẫn chỉ quét vùng A3:A25 là sao???
 
Upvote 0
anh cho hỏi làm sao để tạo được nút button để lựa chọn điều kiện như của anh vậy ạ?
 
Upvote 0
cho em hỏi nếu sửa lại điều kiện filter là >0 hoặc <0 thì làm thế nào ạ?
 
Upvote 0
Bạn sửa lại Range là được:

Mã:
Private Sub CommandButton1_Click()  Dim Check As Boolean
  Check = (CommandButton1.Caption = "Hide")
  CommandButton1.Caption = IIf(Check, "Show", "Hide")
  With Sheet1.Range("[COLOR=#ff0000]A3:B25[/COLOR]")
    If Check Then
      .AutoFilter 2, "<>", , , False
    Else
      .Parent.ShowAllData
    End If
  End With
End Sub
Dạ xin lỗi mọi người ạ! Mong mọi người giải thích cho e câu lệnh sau ạ: Em chân thành cảm ơn!
If Check Then
.AutoFilter 2, "<>", , , False
 
Upvote 0
Dạ xin lỗi mọi người ạ! Mong mọi người giải thích cho e câu lệnh sau ạ: Em chân thành cảm ơn!
If Check Then
.AutoFilter 2, "<>", , , False
Lọc theo cột thứ 2 vùng dữ liệu với điều kiện là lấy những dòng có giá trị (không blank)
 
Upvote 0
Lọc theo cột thứ 2 vùng dữ liệu với điều kiện là lấy những dòng có giá trị (không blank)
Về autofilter em tìm hiểu thì thường nó có cú pháp như sau:
.Range("B3:B16").AutoFilter Field:=1, Criteria1:="<>"
Nhưng như trong sub trên thì có code: .AutoFilter 2, "<>", , , False . Nên em không rõ cú pháp này như thế nào? Mong anh chỉ bảo. em cảm ơn
 
Upvote 0
Về autofilter em tìm hiểu thì thường nó có cú pháp như sau:
.Range("B3:B16").AutoFilter Field:=1, Criteria1:="<>"
Nhưng như trong sub trên thì có code: .AutoFilter 2, "<>", , , False . Nên em không rõ cú pháp này như thế nào? Mong anh chỉ bảo. em cảm ơn
Cái này bạn chịu khó tìm là ra thôi
1531386660688.png
 
Upvote 0
Em chào các bác ạ, em có 1 file như này, cũng muốn loại bỏ hết đi các dòng trống rồi sắp xếp từ lớn xuống bé theo cột "Ngày đáo hạn" (như từ Sheet1 và kết quả mong muốn là Sort), nhưng dùng các code trên không được, khả năng là do các ô hiện có cả ô Merge. Hiện tại thì em làm bằng tay là bỏ Merge từng cột đi, rồi Find & Select/Go to Special/ Blanks; rồi Delete/Delete Cell/Shift Cells up. Nhưng cột "Dự thu lũy kế" bị lệch dòng, em lại phải Vlookup theo Mã Khách hàng để tìm lại giá trị; rồi mới Sort theo Ngày đến hạn. Vậy các bác có thể giúp e viết code thực hiện các bước làm bằng tay của em để ra được kết quả mong muốn không ạ, em cảm ơn các bác.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom