Code xóa dữ liệu dài quá

Liên hệ QC

toandiennuoc123

Thành viên thường trực
Tham gia
7/3/12
Bài viết
239
Được thích
9
Tôi có đoạn code dài quá nó không chạy nhờ các bạn giúp đỡ

Sub Xoa_DL()
Sheets("Dulieu").Range("B5:B180,E5:E180,H5:H180,K5:K180,N5:N180,Q5:Q180,T5:T180,W5:W180,Z5:Z180,AC5:AC180,AF5:AF180,AI5:AI180,AL5:AL180,AO5:AO180,AR5:AR180,AU5:AU180,AX5:AX180,BA5:BA180,BD5:BD180,BG5:BG180,BJ5:BJ180,BM5:BM180,BP5:BP180,BS5:BS180,BV5:BV180,BY5:BY180,CB5:CB180,CE5:CE180,CH5:CH180,CK5:CK180,CN5:CN180,CQ5:CQ180").ClearContents
End Sub

Cám ơn các bạn !
 
Tôi có đoạn code dài quá nó không chạy nhờ các bạn giúp đỡ

Sub Xoa_DL()
Sheets("Dulieu").Range("B5:B180,E5:E180,H5:H180,K5:K180,N5:N180,Q5:Q180,T5:T180,W5:W180,Z5:Z180,AC5:AC180,AF5:AF180,AI5:AI180,AL5:AL180,AO5:AO180,AR5:AR180,AU5:AU180,AX5:AX180,BA5:BA180,BD5:BD180,BG5:BG180,BJ5:BJ180,BM5:BM180,BP5:BP180,BS5:BS180,BV5:BV180,BY5:BY180,CB5:CB180,CE5:CE180,CH5:CH180,CK5:CK180,CN5:CN180,CQ5:CQ180").ClearContents
End Sub

Cám ơn các bạn !
Thử code này xem nhé :
PHP:
Sub xoa()
Dim i As Long
For i = 2 To 95 Step 3
    Range(Cells(5, i), Cells(180, i)).ClearContents
Next
End Sub
 
Upvote 0
Tôi có đoạn code dài quá nó không chạy nhờ các bạn giúp đỡ

Sub Xoa_DL()
Sheets("Dulieu").Range("B5:B180,E5:E180,H5:H180,K5:K180,N5:N180,Q5:Q180,T5:T180,W5:W180,Z5:Z180,AC5:AC180,AF5:AF180,AI5:AI180,AL5:AL180,AO5:AO180,AR5:AR180,AU5:AU180,AX5:AX180,BA5:BA180,BD5:BD180,BG5:BG180,BJ5:BJ180,BM5:BM180,BP5:BP180,BS5:BS180,BV5:BV180,BY5:BY180,CB5:CB180,CE5:CE180,CH5:CH180,CK5:CK180,CN5:CN180,CQ5:CQ180").ClearContents
End Sub

Cám ơn các bạn !

Đã dùng đến code VBA mà bạn có thể viết "kiểu" đó... Bạn cũng chịu cực ghê!
---------
Bạn có thể dùng cách mà hoamattroicoi trình bày ở trên hoặc có thể dùng Union theo code dưới đây
PHP:
Sub Xoa_DL()
  Dim Rng As Range, i As Long
  With Sheets("Dulieu")
    For i = 2 To 95 Step 3
      If Rng Is Nothing Then
        Set Rng = .Range(.Cells(5, i), .Cells(180, i))
      Else
        Set Rng = Union(Rng, .Range(.Cells(5, i), .Cells(180, i)))
      End If
    Next
  End With
  Rng.ClearContents
End Sub
Có thể Union sẽ nhanh hơn chăng?
 
Upvote 0
For i = 2 To 95 Step 3
Bạn ơi cái này có phải là từ cột 2(B) đến cột 95(Q) và có khoảng cách là đến 3(cột)
Cám ơn bạn nhé
 
Upvote 0
Đã dùng đến code VBA mà bạn có thể viết "kiểu" đó... Bạn cũng chịu cực ghê!
---------

PHP:
Sub Xoa_DL()
  Dim Rng As Range, i As Long
  With Sheets("Dulieu")
    For i = 2 To 95 Step 3
      If Rng Is Nothing Then
        Set Rng = .Range(.Cells(5, i), .Cells(180, i))
      Else
        Set Rng = Union(Rng, .Range(.Cells(5, i), .Cells(180, i)))
      End If
    Next
  End With
  Rng.ClearContents
End Sub
Có thể Union sẽ nhanh hơn chăng?

Thầy thông cảm em vẫn còn chưa biết "viết".Cám ơn thầy nhiều
 
Upvote 0
For i = 2 To 95 Step 3
Bạn ơi cái này có phải là từ cột 2(B) đến cột 95(Q) và có khoảng cách là đến 3(cột)
Cám ơn bạn nhé
Chính xác là như thế đó, các cột cần xóa cách nhau có quy luật mà, 95 là cột CQ để kiểm tra bạn muốn dừng ở cột số bao nhiêu ví dụ như ở đây dừng tại CQ thì lại CQ bạn gõ =Column() sẽ đc số 95. Vậy vòng lặp sẽ dừng lại ở 95.
 
Upvote 0
Upvote 0
Tôi cũng như bạn toandiennuoc123 cũng có code xóa dài nhằng mà không biết làm sao cho gọn, hỏi thị ngại quá, sẳn chủ đề này xin quý anh chị giúp luôn thể. Cám ơn các bạn nhiều.
Sub xoa()
Range("C7:F7,H7,C8,C9:F9,C10:H10,G8,H9:J9,B15:G15,B17:G17,B19:G19," & _
"B21:G21,B23:G23,B25:G25,B27:G27,B29:G29,B31:G31,E16,E18,E20,E22,E24,E26,E28,E30,E32," & _
"C16,C18,C20,C22,C24,C26,C28,C30,C32,I34:K34,K35").ClearContents
End Sub
 
Upvote 0
Tôi cũng như bạn toandiennuoc123 cũng có code xóa dài nhằng mà không biết làm sao cho gọn, hỏi thị ngại quá, sẳn chủ đề này xin quý anh chị giúp luôn thể. Cám ơn các bạn nhiều.
Sub xoa()
Range("C7:F7,H7,C8,C9:F9,C10:H10,G8,H9:J9,B15:G15,B17:G17,B19:G19," & _
"B21:G21,B23:G23,B25:G25,B27:G27,B29:G29,B31:G31,E16,E18,E20,E22,E24,E26,E28,E30,E32," & _
"C16,C18,C20,C22,C24,C26,C28,C30,C32,I34:K34,K35").ClearContents
End Sub

Quan trọng là vùng cần xóa có phân bố theo quy luật không? Nếu có quy luật thì dùng dạng của bác ndu cho nhàn người, còn không thì vẫn phải dùng cách chọn trên thôi.
 
Upvote 0
Tôi cũng có code xóa dài nhằng mà không biết làm sao cho gọn, hỏi thị ngại quá, sẳn chủ đề này xin quý anh chị giúp luôn thể. Cám ơn các bạn nhiều.
Bạn tham khảo cái này & bổ sung thêm cỡ chục ô không giống ai vô nữa là được
PHP:
Sub ClearRanges()
 Dim Rg1 As Range, Rg2 As Range, Rg3 As Range
 
 Set Rg2 = [d7].Resize(, 3)
 Set Rg2 = Union(Rg2, Rg2(1).Offset(3).Resize(, 5), Rg2.Offset(2, 5))
 Set Rg3 = [c15].Resize(, 2)
 Set Rg3 = Union(Rg3, Rg3.Offset(2), Rg3.Offset(4))
 Set Rg3 = Union(Rg3, Rg3.Offset(6), Rg3.Offset(12))
 Set Rg3 = Union(Rg3, Rg3.Offset(, 3))
 Set Rg1 = [b15].Resize(18)
 Set Rg1 = Union(Rg1, Rg1.Offset(, 3), [c7].Resize(4), Rg2, Rg3)
 
 Rg1.Interior.ColorIndex = 37

End Sub
 
Upvote 0
Web KT
Back
Top Bottom