Thủ tục xóa dòng trống bằng VBA

Liên hệ QC

dangthingochien

Thành viên mới
Tham gia
29/11/08
Bài viết
31
Được thích
2
Em chào các anh chị, em mới nghiên cứu lập trình VBA trong excel trong sách của anh Phan Tự Hướng cuốn căn bản.
Tới phần thủ tục xóa dòng trống với đoạn code sau:
Sub DeleteEmptyRows()
Dim i As Integer
Dim FirstRow As Integer, LastRow As Integer, UsedRows As Integer
Application.ScreenUpdating = False
'xác định dòng đầu tiên có chứa dữ liệu
FirstRow = ActiveSheet.UsedRange.Row
'xác định số hàng có chứa dữ liệu
UsedRows = ActiveSheet.UsedRange.Rows.Count
'xác định hàng cuối có chứa dữ liệu
LastRow = FirstRow - 1 + UsedRows
For i = LastRow To step - 1 'lùi từng hàng lên trên
'xóa hàng nếu tổng số ô trông hàng có chứa dữ liệu bằng 0(hàng rỗng)
If Application.CountA(Rows(i)) = 0 Then
Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
Thì khi em chạy báo lỗi như hình bên dưới
1652165432032.png
Anh chị có thể cho em biết lỗi chỗ nào không ạ? Em mới học nên chưa hiểu rõ, mong được anh chị chỉ giáo ạ.
Em xin cảm ơn.
 
Em chào các anh chị, em mới nghiên cứu lập trình VBA trong excel trong sách của anh Phan Tự Hướng cuốn căn bản.
Tới phần thủ tục xóa dòng trống với đoạn code sau:
Sub DeleteEmptyRows()
Dim i As Integer
Dim FirstRow As Integer, LastRow As Integer, UsedRows As Integer
Application.ScreenUpdating = False
'xác định dòng đầu tiên có chứa dữ liệu
FirstRow = ActiveSheet.UsedRange.Row
'xác định số hàng có chứa dữ liệu
UsedRows = ActiveSheet.UsedRange.Rows.Count
'xác định hàng cuối có chứa dữ liệu
LastRow = FirstRow - 1 + UsedRows
For i = LastRow To step - 1 'lùi từng hàng lên trên
'xóa hàng nếu tổng số ô trông hàng có chứa dữ liệu bằng 0(hàng rỗng)
If Application.CountA(Rows(i)) = 0 Then
Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
Thì khi em chạy báo lỗi như hình bên dưới

Anh chị có thể cho em biết lỗi chỗ nào không ạ? Em mới học nên chưa hiểu rõ, mong được anh chị chỉ giáo ạ.
Em xin cảm ơn.
Nó báo thiếu next hoặc end if kìa. bạn tìm xem chỗ nào mở For hoặc if thì phải next hoặc end if nữa chứ
 
Upvote 0
Em chào các anh chị, em mới nghiên cứu lập trình VBA trong excel trong sách của anh Phan Tự Hướng cuốn căn bản.
Tới phần thủ tục xóa dòng trống với đoạn code sau:
Sub DeleteEmptyRows()
Dim i As Integer
Dim FirstRow As Integer, LastRow As Integer, UsedRows As Integer
Application.ScreenUpdating = False
'xác định dòng đầu tiên có chứa dữ liệu
FirstRow = ActiveSheet.UsedRange.Row
'xác định số hàng có chứa dữ liệu
UsedRows = ActiveSheet.UsedRange.Rows.Count
'xác định hàng cuối có chứa dữ liệu
LastRow = FirstRow - 1 + UsedRows
For i = LastRow To step - 1 'lùi từng hàng lên trên
'xóa hàng nếu tổng số ô trông hàng có chứa dữ liệu bằng 0(hàng rỗng)
If Application.CountA(Rows(i)) = 0 Then
Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
Thì khi em chạy báo lỗi như hình bên dưới
View attachment 275733
Anh chị có thể cho em biết lỗi chỗ nào không ạ? Em mới học nên chưa hiểu rõ, mong được anh chị chỉ giáo ạ.
Em xin cảm ơn.
1/ Thiếu chỗ in đậm: For i =lastrow to firstrow step -1
2/ Thiếu end if (nếu không end if thì dồn dòng dưới lên cùng hàng, nhưng mà từ từ, cứ học thêm end if vào đi đã)
 
Upvote 0
Sửa code cũ:
PHP:
Option Explicit
Sub DeleteEmptyRows()
Dim i As Integer
Dim FirstRow As Integer, LastRow As Integer, UsedRows As Integer
Application.ScreenUpdating = False
'xác d?nh dòng d?u tiên có ch?a d? li?u
FirstRow = ActiveSheet.UsedRange.Row
'xác d?nh s? hàng có ch?a d? li?u
UsedRows = ActiveSheet.UsedRange.Rows.Count
'xác d?nh hàng cu?i có ch?a d? li?u
LastRow = FirstRow - 1 + UsedRows
For i = LastRow To FirstRow Step -1  'lùi t?ng hàng lên trên
'xóa hàng n?u t?ng s? ô trông hàng có ch?a d? li?u b?ng 0(hàng r?ng)
If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom