Code ẩn dòng trống!!! (1 người xem)

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

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

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 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
Viết Rows("i:i") là sai
Phải vầy: Rows(i & ":" & i)
Dòng này:
Sheets("sheet2").Rows("i:i").EntireRow.Hidden = True
Có thể viết kiểu khác
Sheets("sheet1").Cells(i, 1).EntireRow.Hidden = True
---------
Gọn nhất là
PHP:
Sub an_dong()
 On Error Resume Next
  With Sheets("sheet1").Range("A4:A25")
    .SpecialCells(4).EntireRow.Hidden = True
   End With
End Sub
 
Upvote 0
Viết Rows("i:i") là sai
Phải vầy: Rows(i & ":" & i)
Dòng này:
Sheets("sheet2").Rows("i:i").EntireRow.Hidden = True
Có thể viết kiểu khác
Sheets("sheet1").Cells(i, 1).EntireRow.Hidden = True
---------
Gọn nhất là
PHP:
Sub an_dong()
 On Error Resume Next
  With Sheets("sheet1").Range("A4:A25")
    .SpecialCells(4).EntireRow.Hidden = True
   End With
End Sub
Cảm ơn thầy!
Thầy có thể giải thích dùm tôi: .SpecialCells(4) là gì không ạ?
cảm ơn!!
 
Upvote 0
Cảm ơn thầy!
Thầy có thể giải thích dùm tôi: .SpecialCells(4) là gì không ạ?
cảm ơn!!
Nó tương đương với việc bạn quét chọn A4:A25 rồi bấm Ctrl + G\Special... và chọn Blanks
Tức chọn những cell rổng ---> Vậy thì cần 1 lần là có thể chọn được tất cả mà không cần qua vòng lập For ---> Đương nhiên nó cũng sẽ cho tốc độ nhanh hơn gấp nhiều lần
 
Upvote 0
Nó tương đương với việc bạn quét chọn A4:A25 rồi bấm Ctrl + G\Special... và chọn Blanks
Tức chọn những cell rổng ---> Vậy thì cần 1 lần là có thể chọn được tất cả mà không cần qua vòng lập For ---> Đương nhiên nó cũng sẽ cho tốc độ nhanh hơn gấp nhiều lần
Nhưng tôi vừa làm thử mà kết quả chẳng có dòng nào ẩn cả.
thầy xem giúp tôi nha!
Mã:
tôi có các ô a4 = 1
                 a5 = 1
             .......
                  a10 = 1
                 a11 = "" (rỗng)
               ...........
              a25 = ""
              a26 = 1
vậy thì nó phải ẩn dòng 11 đến dòng 25 chứ nhưng đằng này nó không ẩn dòng nào cả.
Tôi không thể tải file ví dụ lên được nên phải chịu khó làm thế này thôi. Tôi không biết diễn đàn bị lỗi gì nữa mà không tải kèm file được.
mong thầy thông cảm
 
Upvote 0
Nhưng tôi vừa làm thử mà kết quả chẳng có dòng nào ẩn cả.
thầy xem giúp tôi nha!
Mã:
tôi có các ô a4 = 1
                 a5 = 1
             .......
                  a10 = 1
                 a11 = "" (rỗng)
               ...........
              a25 = ""
              a26 = 1
vậy thì nó phải ẩn dòng 11 đến dòng 25 chứ nhưng đằng này nó không ẩn dòng nào cả.
Tôi không thể tải file ví dụ lên được nên phải chịu khó làm thế này thôi. Tôi không biết diễn đàn bị lỗi gì nữa mà không tải kèm file được.
mong thầy thông cảm
Theo mình thấy những ví dụ trên đã hướng dẫn cụ thể rồi. Bạn có thể nhấn F5 thay cho Ctrl + G
 
Upvote 0
PHP Code:
Sub an_dong()
On Error Resume Next
With Sheets
("sheet1").Range("A4:A25")
.
SpecialCells(4).EntireRow.Hidden = True
End With
End Sub
ý mình hỏi là sao mình chạy đoạn code trên mà chẳng thấy có dòng nào ẩn cả. Mong các bác xem lại xem code có sai chỗ nào không?
 
Upvote 0
PHP Code:
Sub an_dong()
On Error Resume Next
With Sheets
("sheet1").Range("A4:A25")
.
SpecialCells(4).EntireRow.Hidden = True
End With
End Sub
ý mình hỏi là sao mình chạy đoạn code trên mà chẳng thấy có dòng nào ẩn cả. Mong các bác xem lại xem code có sai chỗ nào không?
Nếu nó không ẩn dòng nào, có thể dử liệu tại A4:A25 là công thức (chỉ là rổng do công thức trả về chứ không phải cell rổng thật sự)
Với trường hợp này ta dùng AutoFilter ---> Bạn đưa file của bạn lên đây cho dể nhé
 
Upvote 0
PHP Code:
Sub an_dong()
On Error Resume Next
With Sheets("sheet1").Range("A4:A25")
.SpecialCells(4).EntireRow.Hidden = True
End With
End Sub
ý mình hỏi là sao mình chạy đoạn code trên mà chẳng thấy có dòng nào ẩn cả. Mong các bác xem lại xem code có sai chỗ nào không?
Hình như có vấn đề thật, nếu ô A25 có dữ liệu thì không sao ( dù có xóa đi làm lại) nhưng nếu mớ ra bảng tính ra mà A25 trống thì lại hổng chạy, mình cũng "tèo" luôn vì VBA mình rất dỏm, thôi thì bạn thử cái này xem. Còn cái của bạn sửa lại tý nhé là chạy thôi
Sub an_dong()
Dim r (cái này là i)As Integer
Sheets("sheet2").Select
For i = 4 To 25 'Step 1
If Sheets("sheet2").Cells(i, 1).Value = "" Then
Sheets("sheet2").Rows("i:i")(cái này là rows(i).EntireRow.Hidden = True
End If
Next
End Sub
Các bạn trợ giúp bạn bài này đều là các cao thủ VBA đó, mình học được rất nhiều từ các bạn ấy
Thân
 

File đính kèm

Upvote 0
Hình như có vấn đề thật, nếu ô A25 có dữ liệu thì không sao ( dù có xóa đi làm lại) nhưng nếu mớ ra bảng tính ra mà A25 trống thì lại hổng chạy
Bạn nói sao tôi không hiểu?
Thôi thì tôi lấy code của tôi cho vào file bạn đây!
Kiểm tra nhé
 

File đính kèm

Upvote 0
Bạn nói sao tôi không hiểu?
Thôi thì tôi lấy code của tôi cho vào file bạn đây!
Kiểm tra nhé
Thầy mở bài ra , xóa hết dữ liệu đi chỉ để vài hàng có dữ liệu phía trên ( td: A5,A7, A9 chẳng hạn). Đóng file lại nhớ save, sau đó thầy mở lại file và chạy thử xem

Thân
 
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ờ?
 

File đính kèm

Upvote 0
Chào concogia va ndu.....
Tôi muốn viết code ẩn dòng của một khu vực trong sheet thành một thủ tục mà khi đó ta chỉ truyền giá trị qua lời gọi cho nó như sau.
Mã:
Sub andong(rng As Range, sh as String)
On Error Resume Next
Application.ScreenUpdating = False
Dim i, j, k As Integer
 i = a.Row '
 j = a.Rows.Count
   Sheets("sh").Select
   For k = i To (i + j - 1)
   If Cells(i, 1).Value = "" Then
            Sheets("sh").Rows(i).Hidden = True
        End If
    Next
Application.ScreenUpdating = True
End Sub
Nhưng khi gọi thủ tục cho command1 là:
Mã:
Private Sub CommandButton1_Click()
andong ("A1:B6","sheet3")
End Sub
thì nó báo lỗi là sai kiểu
Mong hai bác giúp tôi sửa lỗi code với!. cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Chào concogia va ndu.....
Tôi muốn viết code ẩn dòng của một khu vực trong sheet thành một thủ tục mà khi đó ta chỉ truyền giá trị qua lời gọi cho nó như sau.
Mã:
Sub andong(rng As Range, sh as String)
On Error Resume Next
Application.ScreenUpdating = False
Dim i, j, k As Integer
 i = a.Row 
 j = a.Rows.Count
   Sheets([COLOR=Red]"sh"[/COLOR]).Select [COLOR=Red]--> sh[/COLOR]
   For k = i To (i + j - 1)
   If Cells(i, 1).Value = "" Then
            Sheets([COLOR=Red]"sh"[/COLOR]).Rows(i).Hidden = True [COLOR=Red]--> sh[/COLOR]
        End If
    Next
Application.ScreenUpdating = True
End Sub
Nhưng khi gọi thủ tục cho command1 là:
Mã:
Private Sub CommandButton1_Click()
andong ([COLOR=Red]"A1:B6"[/COLOR],"sheet3") [COLOR=Red]--> [A1:B6][/COLOR]
End Sub
thì nó báo lỗi là sai kiểu
Mong hai bác giúp tôi sửa lỗi code với!. cảm ơn!

Bạn sửa lại mấy chổ màu đỏ xem sao.
 
Upvote 0
Tôi muốn viết code ẩn dòng của một khu vực của sheet thành một thủ tục mà khi ta truyền giá trị qua lời gọi cho nó như sau.
PHP:
Sub andong(rng As Range, sh as String)
On Error Resume Next
Application.ScreenUpdating = False
Dim i, j, k As Integer   '*'
 i = a.Row ' **'
 j = a.Rows.Count  '**'
   Sheets("sh").Select
   For k = i To (i + j - 1)
        If Cells(i, 1).Value = "" Then
            Sheets("sh").Rows(i).Hidden = True
        End If
    Next
Application.ScreenUpdating = True
End Sub
Nhưng khi gọi thủ tục cho command1 là:
Mã:
[B]Private Sub CommandButton1_Click()[/B]
  andong ("A1:B6","sheet3")
[B]End Sub[/B]
thì nó báo lỗi là sai kiểu

Nó báo sai kiểu thì ta phải tường minh về kiểu là điều đán làm trước tiên;
Đầu tiên bạn thử gọi như vầy xem sao:
PHP:
Private Sub CommandButton1_Click()
  andong Range("A1:B6"),"sheet3"
End Sub

Ở macro đầu, biến a của bạn là cái chi vậy, hình như nó là biến đối tượng; sao bạn không khai báo cho tường minh vào, nhất là chúng ta đang chập chững thì càng phải tường minh!
Hơn nữa các biến i & j sẽ có kiểu Variant & là không cần thiết, nhưng kiểu Integer cũng chưa chắc chắn & thích hợp lắm. Chính vì phần dưới của macro, các biến này chứa trị là số dòng nào đó của trang tính; mà đã là số dòng ta nên khai báo kiểu biến là Long.

Mình khuyên bạn không nên khai báo tên biến chỉ là 1 ký tự; Đừng nên bắt chước các vị Hàn lâm, học bài bản tư những trường chính quy. Ta là những người tự học thì phải rành mạch & khiêm nhừơng đi & cách hành xử phải khác họ chứ!

Cũng chỉ mong chúng ta cùng mau tiến bộ mà thôi!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Tôi muốn viết code ẩn dòng của một khu vực của sheet thành một thủ tục mà khi ta truyền giá trị qua lời gọi cho nó như sau.
PHP Code:
Sub andong(a As Range, sh as String)
On Error Resume Next
Application
.ScreenUpdating = False
Dim i
, j, k As Integer '*'
i = a.Row ' **'
j = a.Rows.Count '**'
Sheets("sh").Select
For k = i To (i + j - 1)
If
Cells(i, 1).Value = "" Then
Sheets
("sh").Rows(i).Hidden = True
End
If
Next
Application
.ScreenUpdating = True
End Sub

Nhưng khi gọi thủ tục cho command1 là:
Code:
Private Sub CommandButton1_Click()
andong ("A1:B6","sheet3")
End Sub
thì nó báo lỗi là sai kiểu
cảm ơn các bạn nhé, mình đã sửa lại rồi nhưng nó vẫn ko chạy.
PHP:
  Private Sub CommandButton1_Click()
  andong Range("A1:B6"),"sheet3" --> sao mình gọi andong ("A1:B6","sheet3") --> báo lỗi
End Sub
Mong các bạn giúp đỡ!
 
Upvote 0
cảm ơn các bạn nhé, mình đã sửa lại rồi nhưng nó vẫn ko chạy.
PHP:
  Private Sub CommandButton1_Click()
  andong Range("A1:B6"),"sheet3" --> sao mình gọi andong ("A1:B6","sheet3") --> báo lỗi
End Sub
Mong các bạn giúp đỡ!
Thay vì hỏi lòng vòng, bạn chỉ cần đưa file đang báo lổi của bạn lên đây là mọi việc xong ngay! Có đôi lúc cái sai nằm ở những lổi mà bạn không nhìn thấy được
 
Upvote 0
Thay vì hỏi lòng vòng, bạn chỉ cần đưa file đang báo lổi của bạn lên đây là mọi việc xong ngay! Có đôi lúc cái sai nằm ở những lổi mà bạn không nhìn thấy được
Chào ndu.....!
Tôi không tải file từ máy lên được cũng như từ url. (lỗi fail....). nên tôi mới viết như thế lên diễn đàn. Nhiều lần hỏi nhưng không giúp tôi cách tải file lên diễn đàn mà không bị lỗi "fail".
Vì thế tôi tải lên web của tôi:
link: http://sites.google.com/site/anhbatt/luu-tru/ANDONG.rar?attredirects=0&d=1
Mong bác xem! (nó ở sheet3)
 
Upvote 0
Chào ndu.....!
Tôi không tải file từ máy lên được cũng như từ url. (lỗi fail....). nên tôi mới viết như thế lên diễn đàn. Nhiều lần hỏi nhưng không giúp tôi cách tải file lên diễn đàn mà không bị lỗi "fail".
Vì thế tôi tải lên web của tôi:
link: http://sites.google.com/site/anhbatt/luu-tru/ANDONG.rar?attredirects=0&d=1
Mong bác xem! (nó ở sheet3)
Code của bạn sai quá trời luôn (lại thừa nhiều chổ)
Tôi sửa lại đây:
PHP:
Sub Andong(a As Range, sh As String)
  Dim i As Long
  On Error Resume Next
  Application.ScreenUpdating = False
  Sheets(sh).Select
  For i = i To a.Rows.Count
     If a(i, 1).Value = "" Then
       a(i, 1).EntireRow.Hidden = True
     End If
  Next
  Application.ScreenUpdating = True
End Sub
PHP:
Private Sub CommandButton1_Click()
  Andong [A1:B6], "sheet3"
End Sub
 

File đính kèm

Upvote 0
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

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

Back
Top Bottom