LuuAnh980
Thành viên tiêu biểu
- Tham gia
- 28/9/22
- Bài viết
- 452
- Được thích
- 104
- Giới tính
- Nữ
Sub Sub_HupChao()
Dim Sh As Worksheet
Dim Rws As Long
For Each Sh In ThisWorkbook.Worksheets
Rws = 9 + Sh.UsedRange.Rows.Count
MsgBox Range("D3:E" & Rws).Address, ,Sh.Name
MsgBox [J3].Resize(Rws).Address
MsgBox [L3].Resize(Rws).Address
Next Sh
End Sub
Chả biết học đâu có cặp dấu { }. Xóa đi thử xemEm dùng đoạn code này để xóa dữ liệu cột D3 đến E, và cột J, và cột L của sheet Beginning.
{ } là mảng. [ ] là evaluate. Code của thớt sẽ tạo ra mảng 1 dòng 1 cột.Chả biết học đâu có cặp dấu { }. Xóa đi thử xem
Code ai đó viết cho thớt, dự bị là nhiều sheets (xem giải thích về mảng ở trên).Ủa nếu biết chính xác thì
PHP:With Sheets("Beginning") Xóa gì thì xóa ? End with
Tôi biết. Ý tôi là ai chỉ/ dạy/ làm mẫu cách này (GPE 10 năm nay không thấy).{ } là mảng. [ ] là evaluate. Code của thớt sẽ tạo ra mảng 1 dòng 1 cột.
Thử tham khảo xem sao.nó cách quãng
File đây ạ.
Sub XoaDuLieu()
Dim sh As Worksheet, lr As Long, i As Long, arr
Set sh = ThisWorkbook.Sheets("Beginning")
arr = Array(4, 5, 10, 12)
lr = sh.Cells(Rows.Count, 4).End(xlUp).Row
With sh
For i = 0 To UBound(arr)
.Range(.Cells(3, arr(i)), .Cells(lr, arr(i))).ClearContents
Next i
End With
End Sub
GPE chỉ thích dùng [ ] như là viết tắt của Evaluate. Và thường chỉ dùng cho Range.Tôi biết. Ý tôi là ai chỉ/ dạy/ làm mẫu cách này (GPE 10 năm nay không thấy).
...
Option Explicit
Sub XoaIssue()
Dim Sh As Variant, lr As Long
Application.ScreenUpdating = False
For Each Sh In Worksheets(Array("Beginning"))
' Sheets(Sh).Select
lr = Sheets("Beginning").Cells(Rows.Count, 4).End(xlUp).Row
Sh.Range("D3:E" & lr + 1).Clear 'Contents
Sh.Range("J3" & lr + 1).Clear
Sh.Range("L3" & lr + 1).Clear
Next Sh
Application.ScreenUpdating = True
End Sub
Sh.Range("D3:E" & lr + 1).Clear 'Contents
Thử xem điều gì sẽ xảy ra. Rồi sẽ hiểu vấn đề là như thế nàoThay bằngMã:Sh.Range("D3:D" & lr + 1).Clear.
Option Explicit
Sub XoaIssue()
Dim Sh As Variant, lr As Long
Application.ScreenUpdating = False
For Each Sh In Worksheets(Array("Beginning"))
' Sheets(Sh).Select
lr = Sheets("Beginning").Cells(Rows.Count, 4).End(xlUp).Row
Sh.Range("D3:D" & lr + 1).Clear 'Contents
Sh.Range("E3:E" & lr + 1).Clear 'Contents
Sh.Range("J3:J" & lr + 1).Clear
Sh.Range("L3:L" & lr + 1).Clear
Next Sh
Application.ScreenUpdating = True
End Sub
Câu gợi ý bài 12 không hợp lý. Gợi ý phải là "so sánh câu lệnh xóa cột J và cột L ở bài 11 so với bài 1 khác nhau cái gì".Vậy phải chỉnh lại từng cột hả bạn @hhoang_56 .
Thấy bạn cũng biết chỉnh lại đoạn code thì nhờ các anh trên đây bàn thêm bàn để bạn hiểu trước, sau thì áp dụng chỉnh sửa sẽ hiểu thêm.nó cách quãng anh @huhumalu ơi.
Dim WB As Workbook 'Định nghĩa biến WB
Dim WS As Worksheet 'Định nghĩa biến WS
Set WB = ThisWorkbook
For Each WS In WB.Worksheets
'Quét qua tất cả các sheet đang có.
Next
Debug.Print WS.Name
WS.Range("A1:C10").Value = "Hello"
WS.Range("B1:B5").ClearContents
sd.Range("A" & lrd + 1).Resize(r, 16) = md
sd.Range("A" & lrd + 1).Resize(r, 16).Borders.LineStyle = True
A & Last row = "A" & lrd + 1 = "A" & 100 + 1 = "A101", đó là địa chỉ (1 ô) chứ còn gì nữa?sd.Range("A" & lrd + 1).Resize(r, 16) = md
sao chỉ lấy cột A và last row thôi, không cần chỉ định rỏ đia chỉ ạ.
sd.Range("A" & lrd + 1).Resize(r, 16) = md
sd.Range("A" & lrd + 1).Resize(r, 16).select
Sub XoaDuLieu()
Dim sh As Worksheet, lr As Long, i As Long, arr
Set sh = ThisWorkbook.Sheets("Beginning")
arr = Array(4, 5, 10, 12)
lr = sh.Cells(Rows.Count, 4).End(xlUp).Row
If Range("D4").Value <> "" Then 'them vào
With sh
For i = 0 To UBound(arr)
.Range(.Cells(3, arr(i)), .Cells(lr, arr(i))).ClearContents
Next i
End With
End If ' them vào
End Sub
Góp vui: Để đạt được ý bạn như trên có thể tham khảo code sau:..... lỡ tay chạy lần 2, thì code lại xóa luôn dòng tiêu đề của em luôn. (D3: E3), J3, L3.
Em có thử chạy tiếp thì lại xóa tiếp D2:E2,J2,L2. Chạy tiếp thì xóa tới D1:E1, J1, L1. Hết mới thôi.
Có cách nào hạn chế việc này không ạ.
Như là D4:E4 có dữ liệu thì mới xóa.
Sub XoaDuLieu()
Dim sh As Worksheet, lr As Long, i As Long, arr
Dim Rng as Range
Set sh = ThisWorkbook.Sheets("Beginning")
arr = Array(4, 5, 10, 12)
With sh
For i = 0 To UBound(arr)
lr = sh.Cells(Rows.Count, i).End(xlUp).Row ' tìm dong cuôi cua côt đinh xóa
If lr=4 then ' Kiêm tra xem cột định xóa có dư liêu không? nếu có thì gom lại
If Rng is nothing then
Set Rng =Range(.Cells(3, arr(i)), .Cells(lr, arr(i)))
else
Set Rng=Union(Rng, Range(.Cells(3, arr(i)), .Cells(lr, arr(i)))
end if
end if
Next i
End With
Rng .ClearContents
End Sub