Xóa các dòng, cột ẩn bằng VBA (1 người xem)

Liên hệ QC

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

Tunguyen

Thành viên mới
Tham gia
6/10/07
Bài viết
25
Được thích
2
Các bác chỉ em cách xóa các row hoặc các column ẩn bằng VBA với. Em cảm ơn .
Em đã tìm trên diễn đàn nhưng mà không thấy nên mới hỏi các bác.
 
Chỉnh sửa lần cuối bởi điều hành viên:
digita đã viết:
Còn xóa các cột ẩn thì là:

Xin phép sửa code 2 của bác digita cho nó chạy, các bạn thử nhé.
Mã:
[COLOR=darkblue]Sub[/COLOR] DelHiddenCols()
    [COLOR=darkblue]Dim[/COLOR] r [COLOR=darkblue]As[/COLOR] Range, k [COLOR=darkblue]As[/COLOR] Range
    [COLOR=darkblue]With[/COLOR] ActiveSheet
        [COLOR=darkblue]Set[/COLOR] r = .Range(Cells(1, 1), Cells(1, .Cells.SpecialCells(xlCellTypeLastCell).Column))
        [COLOR=darkblue]Set[/COLOR] k = r.SpecialCells(xlCellTypeVisible)
        r.EntireColumn.Hidden = [COLOR=darkblue]False[/COLOR]
        k.EntireColumn.Hidden = [COLOR=darkblue]True[/COLOR]
        r.SpecialCells(xlCellTypeVisible).EntireColumn.Delete
        r.EntireColumn.Hidden = [COLOR=darkblue]False[/COLOR]
    [COLOR=darkblue]End[/COLOR] [COLOR=darkblue]With[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
Sub DelHiddenRows()

@AnhTuan bác vào VBE cdi chuyển đến code báo lỗi, rồi bác nhấn F8, nhấn từ từ đến khi nó thông báo lỗi thì bác post lên cho em biết nó báo lỗi tại dòng nào ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Oh... nó hứng lên thì báo lỗi... mà lỗi nhìn lạ lắm.. chỉ 1 khung hiện ra có số 400 vậy thôi.. còn trong code thì ko có dòng nào lỗi cả.. tuy nhiên nó vẩn xóa dc các cột ẩn... Và có khi bấm vài lần thì nó lại ko lỗi... chẳng hiểu
 
Upvote 0
Đoạn code trên sẽ báo lỗi nếu ta không có dòng nào hidden cả, đây là code để fix:

Mã:
[color=darkblue]Sub[/color] DelHiddenCols()
    [color=darkblue]Dim[/color] r [color=darkblue]As[/color] Range, k [color=darkblue]As[/color] Range
    [color=darkblue]With[/color] ActiveSheet
        [color=darkblue]Set[/color] r = .Range(Cells(1, 1), Cells(1, .Cells.SpecialCells(xlCellTypeLastCell).Column))
        [color=darkblue]Set[/color] k = r.SpecialCells(xlCellTypeVisible)
        [color=darkblue]If[/color] r.Cells.Count > k.Cells.Count [color=darkblue]Then[/color]
            r.EntireColumn.Hidden = [color=darkblue]False[/color]
            k.EntireColumn.Hidden = [color=darkblue]True[/color]
            r.SpecialCells(xlCellTypeVisible).EntireColumn.Del ete
            r.EntireColumn.Hidden = [color=darkblue]False[/color]
        [color=darkblue]End[/color] [color=darkblue]If[/color]
    [color=darkblue]End[/color] [color=darkblue]With[/color]
    [color=darkblue]Set[/color] r = [color=darkblue]Nothing[/color]
    [color=darkblue]Set[/color] k = [color=darkblue]Nothing[/color]
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
 
Lần chỉnh sửa cuối:
Upvote 0
Anh down cái file này về nhá. Đóng XL rồi mở cái file này, bấm nút Ctrl & chọn 1 số dòng tùy ý rải rác khắp nơi. Làm ẩn chúng. Rồi chạy code DelHiddenRows và so sánh các con số ở cột A và số hàng. Các con số ấy so le ở các chổ các hàng ẩn bị xóa đó.

Còn nếu các hàng ẩn còn thì máy anh có vấn đề rồi.

Mến.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Uh... file Book1 này thì ko báo lỗi gì cả... Còn cái mà tôi nói bị lỗi 400 ấy tôi có ẫn dòng và cột đàng hoàng.. nó vẫn lỗi...
 
Upvote 0
Đúng rồi bạn Sói Biển đã sửa code để xóa nhanh các cột ẩn. Code chạy rất ngon lành.

Cám ơn Sói Biển nha.

Mến
 
Upvote 0
Tìm hiểu về VBA

Tôi thấy mọi người hay nhắc đến VBA. Vậy VBA là gì? sử dụng như thế nào? Các bạn giải thích giúp tôi nhé
Thân!

Vấn đề không phải là dốt mà dốt mới là vấn đề!--=0
 
Upvote 0
Upvote 0
BNTT đã viết:
Cái xóa hàng thì được còn cái xóa cột thì không bác Digita ơi (mặc dù đã sửa dùm bác chữ Delete rồi)


Em chạy thử nó báo lỗi này :

Run-time error '1004':

No cells were found.

rồi nó báo lỗi ở hàng này
Mã:
Sub DelHiddenRows()
Dim r As Range, k As Range
With ActiveSheet
Set r = .Range("A1:A" & .Cells.SpecialCells(xlCellTypeLastCell).Column)
[COLOR="Red"][B]Set k = r.SpecialCells(xlCellTypeVisible)[/B][/COLOR]
r.EntireColumn.Hidden = False
k.EntireColumn.Hidden = True
r.SpecialCells(xlCellTypeVisible).EntireColumn.Delete
r.EntireColumn.Hidden = False
End With
End Sub
 
Upvote 0
Lỗi này xuất hiện khi trên file của bạn ko có dòng ẫn... Bạn thử ẩn 1 vài dòng rồi chạy lại code đi.. sẽ ko còn lỗi nữa đâu
Mà đúng ra là lỗi phải ở dòng 8 chứ nhỉ?
 
Upvote 0
Có dòng ẩn mà anh, em thử trên book1.xls của digita thì không báo lỗi, nhưng copy code sang file mới thì báo lỗi như trên.
 

File đính kèm

Upvote 0
Code này chỉ xóa dòng ẩn... Bạn ẩn luôn cột đương nhiên là báo lổi rồi...
 
Upvote 0
Tunguyen đã viết:
Em chạy thử nó báo lỗi này :

Run-time error '1004':

No cells were found.

rồi nó báo lỗi ở hàng này
Mã:
Sub DelHiddenRows()
Dim r As Range, k As Range
With ActiveSheet
Set r = .Range("A1:A" & .Cells.SpecialCells(xlCellTypeLastCell).Column)
[COLOR="Red"][B]Set k = r.SpecialCells(xlCellTypeVisible)[/B][/COLOR]
r.EntireColumn.Hidden = False
k.EntireColumn.Hidden = True
r.SpecialCells(xlCellTypeVisible).EntireColumn.Delete
r.EntireColumn.Hidden = False
End With
End Sub

Vì không có hàng ẩn nên nó mới báo lỗi. Để bẩy lổi này thì chỉ đặt 1 cái test để kiễm tra coi có hàng ẩn rồi mới tiếp tục.

Bạn thử cái code sửa lại dưới đây nha:

Sub DelHiddenRows()
Dim r As Range, k As Range
If Cells.Rows.Count - Cells.SpecialCells(xlCellTypeVisible).Count > 0 Then
With ActiveSheet
Set r = .Range("A1:A" & .Cells.SpecialCells(xlCellTypeLastCell).Row)
Set k = r.SpecialCells(xlCellTypeVisible)
r.EntireRow.Hidden = False
k.EntireRow.Hidden = True
r.SpecialCells(xlCellTypeVisible).EntireRow.Delete
r.EntireRow.Hidden = False
End With
Set r = Nothing
Set k = Nothing
Else
MsgBox "Khong co hang an."
End If

End Sub

Mến
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Digita xem lại nha! Nếu vừa có hàng ẩn, vừa có cột ẩn thì code này sẽ báo sai, nó sẽ báo rằng "Không có hàng ẩn"... Vô lý!
 
Upvote 0
anhtuan1066 đã viết:
Digita xem lại nha! Nếu vừa có hàng ẩn, vừa có cột ẩn thì code này sẽ báo sai, nó sẽ báo rằng "Không có hàng ẩn"... Vô lý!

Cám ơn anh bạn đã phá hiện lỗi trong code trên. Tôi quên 1 chữ rows nhỏ nên nó chạy không đúng thôi. Làm lại nhá:

Sub DelHiddenRows()
Dim r As Range, k As Range
If Cells.Rows.Count - Cells.SpecialCells(xlCellTypeVisible).Rows.Count > 0 Then
With ActiveSheet
Set r = .Range("A1:A" & .Cells.SpecialCells(xlCellTypeLastCell).Row)
Set k = r.SpecialCells(xlCellTypeVisible)
r.EntireRow.Hidden = False
k.EntireRow.Hidden = True
r.SpecialCells(xlCellTypeVisible).EntireRow.Delete
r.EntireRow.Hidden = False
End With
Set r = Nothing
Set k = Nothing
Else
MsgBox "Khong co hang de xoa."
End If
End Sub

Và để xóa cột ẩn thì:

Sub DelHiddenCols()
Dim r As Range, k As Range
If Cells.Columns.Count - Cells.SpecialCells(xlCellTypeVisible).Columns.Count > 0 Then
With ActiveSheet
Set r = .Range(Cells(1, 1), Cells(1, .Cells.SpecialCells(xlCellTypeLastCell).Column))
Set k = r.SpecialCells(xlCellTypeVisible)
If r.Cells.Count > k.Cells.Count Then
r.EntireColumn.Hidden = False
k.EntireColumn.Hidden = True
r.SpecialCells(xlCellTypeVisible).EntireColumn.Delete
r.EntireColumn.Hidden = False
End If
End With
Set r = Nothing
Set k = Nothing
Else
MsgBox "Khong co cot an de xoa."
End If
End Sub

Đã thữ qua chạy rất ngon lành.


Mến
 
Upvote 0
B1. Nhấn tổ hợp phím All+F11 / Hộp thoại Microsoft Visual Basic xuất hiện
Trong mục Project/ R_Click vào ThisWorkbook / View code
Trong mục View code dán dòng lệnh sau:

Sub DeleteHiddenRows()
Dim i As Long
Dim LastRow As Long
If WorksheetFunction.CountA(Cells) > 0 Then
LastRow = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End If
For i = LastRow To 1 Step -1
If Cells(i, "A").RowHeight = 0 And _
Cells(i, "A").ColumnWidth <> 0 Then
Cells(i, "A").EntireRow.Delete
End If
Next i
End Sub

Sau đó Ctrl + S để save lại. Đóng cửa sổ MS Visual basic rồi quay lại file exel cần xóa hàng và cột ẩn
Chọn View / Macros / View macros/ D_click Thisworkbook.DeleteHiddenRows
Thế là xong.
Các bạn thử cái này xem nhé. Nếu hay thanks mình một cái nhé.
 
Upvote 0
Cảm ơn bạn nhé !

Nhờ bạn làm giúp tôi mấy vấn đề này dc ko?

* Trong file đính kèm : AP_223405

Nếu giá trị ở cột B =0 , thì ẩn dòng
và giá trị cả 2 cột B và C = 0, thì cũng ẩn dòng

Nhờ mọi ng nhé !

Cảm ơn nhiều !!!
 
Upvote 0
Cảm ơn bạn nhé !

Nhờ bạn làm giúp tôi mấy vấn đề này dc ko?

* Trong file đính kèm : AP_223405

Nếu giá trị ở cột B =0 , thì ẩn dòng
và giá trị cả 2 cột B và C = 0, thì cũng ẩn dòng

Nhờ mọi ng nhé !

Cảm ơn nhiều !!!
 
Upvote 0
Web KT

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

Back
Top Bottom