Nhờ giúp đỡ check code trong vba (1 người xem)

Liên hệ QC

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

Vuxuanbinh

Thành viên mới
Tham gia
4/3/16
Bài viết
8
Được thích
0
Chào cả nhà.
Mình có 1 file mẫu như attached.
Mình cần xóa các ô chứa nội dung và giữ lại các đầu mục.
Mình có dùng đoạn code như sau mà không hiệu quả.
Có bạn nào hiểu lỗi ở đâu thì check lại cho mình với.
Mình xin cám ơn

PHP:
Sub VD_Bienso()Dim Marks As RangeDim C, D As IntegerSet Marks = Range("A:A")D = 0For Each C In MarksIf C.Value = "PTSC-SMP8" Then [C].Select Selection.EntireRow.DeleteEnd IfNext CMsgBox "Done"End Sub
 

File đính kèm

Vậy sửa lại thế này thử xem.
Mã:
Sub VD_Bienso()
Dim Marks As Range
Dim C As Range
Set Marks = Range("A4:A" & Range("A65000").End(xlUp).Row)
For Each C In Marks
If C.Value = "PTSC-SMP8" Then
    C.EntireRow.ClearContents
End If
Next C
    MsgBox "Done"
End Sub
 
Upvote 0
[ ] là ký hiệu viết tắt của Evaluate. Nó chỉ làm việc được với hằng số (chữ số, ký tự...)
Trong code của bạn, đặt C trong [ ] để thành [C] là không đúng (tôi đoán ý bạn muón nói biến C)
 
Upvote 0
ViDu.jpg

Cám ơn các bạn.
Mình muốn xóa nội dung và chỉ còn lại các đầu mục như trong ảnh.
Mình đã sửa theo như bạn nói nhưng vẫn chưa đc như mình muốn. Khi chạy macro nó chỉ xóa đc vài dòng. Mình bấm vài lần thì mới xóa đc hết. !$@!!.
Không biết có cách nào để xóa 1 lần hết luôn và nhanh nhất không. Vì mình thấy việc chạy từng dòng để xóa như này chưa có hiệu quả lắm, chạy khá chậm.
 
Upvote 0
Vậy sửa lại thế này thử xem.
Mã:
Sub VD_Bienso()
Dim Marks As Range
Dim C As Range
Set Marks = Range("A4:A" & Range("A65000").End(xlUp).Row)
For Each C In Marks
If C.Value = "PTSC-SMP8" Then
    C.EntireRow.ClearContents
End If
Next C
    MsgBox "Done"
End Sub
Test thử với code này thì thấy nó xóa 1 lần hết luôn mà, đâu có xóa từng dòng đâu
 
Upvote 0
À. Như code trên thì đúng là clear content lại rất nhanh. Mà mình cần Delete Row luôn ý.
 
Upvote 0
À. Như code trên thì đúng là clear content lại rất nhanh. Mà mình cần Delete Row luôn ý.
Bạn muốn Delete thì dùng:
PHP:
Sub XOA()
With Range("A12:A" & ActiveSheet.UsedRange.Rows.Count)
    .AutoFilter 1, "PTSC-SMP8"
    .SpecialCells(xlCellTypeVisible).Delete xlUp
End With
ActiveSheet.AutoFilterMode = False
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom