Xin giúp đỡ Code VBA không chạy. (2 người xem)

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

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

Tôi tuân thủ nội quy khi đăng bài

nhoa18

Thành viên mới
Tham gia
4/12/08
Bài viết
33
Được thích
15
Sub HideRowsConditionally()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("TMBCTC")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "AO").End(xlUp).row

Dim i As Long
For i = 1 To lastRow
If ws.Cells(i, 1).Value = "x" Then
ws.Rows(i).Hidden = True
End If
Next i
End Sub

E chạy đoạn code trên nhưng nó không hoạt động. Bác nào biết lỗi ở đau chỉ giúp e với ạh. E xin cảm ơn ạh!
 
Sub HideRowsConditionally()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("TMBCTC")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "AO").End(xlUp).row

Dim i As Long
For i = 1 To lastRow
If ws.Cells(i, 1).Value = "x" Then
ws.Rows(i).Hidden = True
End If
Next i
End Sub

E chạy đoạn code trên nhưng nó không hoạt động. Bác nào biết lỗi ở đau chỉ giúp e với ạh. E xin cảm ơn ạh!
thêm thuộc tính
.EntireRow.Hidden = True
vào chỗ Rows(... xem sao
 
Upvote 0
Xem thử LastRow bằng bao nhiêu.
 
Upvote 0
PHP:
Sub HideRowsConditionally()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("TMBCTC")
  
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "AO").End(xlUp).row
  
    Dim i As Long
    For i = 1 To lastRow
        If ws.Cells(i, 1).Value = "x" Then
            ws.Rows(i).Hidden = True
        End If
    Next i
End Sub

E chạy đoạn code trên nhưng nó không hoạt động. Bác nào biết lỗi ở đau chỉ giúp e với ạh. E xin cảm ơn ạh!
Thứ nhất: Bạn có thể chuyển ngữ từ VBA sang tiếng Việt hay tiếng nào mà bạn thông thuộc thì có thể tự thấy vấn đề
lastRow = ws.Cells(ws.Rows.Count, "AO").End(xlUp).row
Đây là câu lệnh tìm dòng 'lớn nhất' thuộc cột 'AO' có dữ liệu;
Sau câu lệnh này bạn toàn quyền hỏi nó đó là dòng nào, bỡi MsgBox lastRow
→ Nếu chẳng may cột 'AO' này rỗng thì bạn bạn đã phí phạm điện để chạy chương trình;
Nếu không rỗng thì xin chúc mừng bạn & ta tiếp:
Bạn tạo vòng lặp duyệt theo các dòng từ 1 cho đến dòng cuối của cột 'A'
→ Nếu chẳng may cột 'A' này rỗng thì chương trình lại tốn điện khi vâng lời bạn để chạy!
Bằng ngược lại cột 'A' này có dữ liệu
→ Nhưng không chứa dữ liệu yêu cầu ('x') thì chương trình cũng chạy trơn tuột!
→ Cũng phải tính tới chuyện trên cột 'A' này chỉ có 'X' mà không có 'x' như bạn hằng mong mõi!

Thứ hai Nếu là mình thì nên xài phương thức FIND() sẽ gọn gàng & nhanh chóng đạt kết quả hơn vòng lặp

Thứ ba: Bạn cần tìm các dòng có chứa 'x' ở cột 'A' & lại từ trên xuống dưới; điều này có nguy cơ bỏ lọt tội phạm đáng xóa;
Cái tật của tên Excel cố hữu này là dòng trên bị xóa thì dòng dưới được/bị đôn lên
& như vậy dòng bị/được đôn lên này có chứa 'x' ở cột 'A' thì không bị 'trù dập' rồi còn gì!

Nói thêm vẫn có cách duyệt từ trên xuống, nhưng chắc bạn sẽ phải tìm hiểu sau, 1 khi bạn đã duyệt từ dưới lên suôn sẻ đã!

Chờ những phản hồi từ bạn & rất cảm ơn đã đọc!
 
Upvote 0
Thứ ba: Bạn cần tìm các dòng có chứa 'x' ở cột 'A' & lại từ trên xuống dưới; điều này có nguy cơ bỏ lọt tội phạm đáng xóa;
Cái tật của tên Excel cố hữu này là dòng trên bị xóa thì dòng dưới được/bị đôn lên
Trường hợp bài này chỉ là ẩn dòng nên không bị "đôn lên"
 
Upvote 0
Cũng có thể không được thật, nhưng không được ra sao thì chỉ mình bạn biết, bạn làm lại cho được nhé.
Còn muốn có câu trả lời nhanh, thì phải mô tả thật chi tiết, và có thêm cả file giả lập như thật gửi lên đây. Không thì cứ chờ tiếp vậy
 
Upvote 0
@nhoa18 sửa mã của bạn
1. Thêm CSRT: CSRT(ws.Cells(i, 1).Value)
2. Đặt cột là 1 thay vì "OA": LastRow = ws.Cells(ws..UsedRange.Rows.Count + 2, 1).End(xlUp).row
 
Upvote 0
Web KT

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

Back
Top Bottom