Xin giúp đỡ code với lệnh remove dữ liệu.

Liên hệ QC

kimtanmap

Thành viên mới
Tham gia
29/12/16
Bài viết
26
Được thích
7
Em có một sheet "danh sach", em muốn khi bấm lệnh xóa một hàng cell từ sheet "danh sach" thì dữ liệu sẽ được chuyển qua sheet "Xoa".
Em tìm trên mạng thì thấy có code:
Sub Xoa()
Dim rngCurCell, rng2Delete As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each rngCurCell In Selection
If Not rng2Delete Is Nothing Then
Set rng2Delete = Application.Union(rng2Delete, _
ActiveSheet.Cells(rngCurCell.Row, 1))
Else
Set rng2Delete = rngCurCell
End If
Next rngCurCell
If Not rng2Delete Is Nothing Then
rng2Delete.EntireRow.Delete
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Chỉ cần gán macro là nó xóa thẳng, không Ctrl + Z được luôn.
Nãy em thấy trên diễn đàn có anh viết thêm đoạn code cho việc xóa và chuyển dữ liệu qua sheet khác.
Dim dongcuoi As Long

With ThisWorkbook.Worksheets("Xoa") '

dongcuoi = .Cells(.Rows.Count, "B").End(xlUp).Row + 1

Rng.Copy .Cells(dongcuoi, "B")

End With

Em có kèm theo file của mình
 

File đính kèm

  • Du lieu.xlsb
    30.3 KB · Đọc: 4
Sau khi trình bày 1 hồi thì rốt cuộc bạn muốn gì? (Đừng bảo là xem trong file nhé!)
 
Upvote 0
Sau khi trình bày 1 hồi thì rốt cuộc bạn muốn gì? (Đừng bảo là xem trong file nhé!)
Thớt muốn cái tương tự như cái này:
1627188719175.png

Chỉ khác là bên kia có thể người ta xoá nhiều dòng một lúc, thớt chỉ xoá một dòng (nhưng ai biết chuyện được voi đòi tiên, về sau lại đổi ý)
 
Upvote 0
Sau khi trình bày 1 hồi thì rốt cuộc bạn muốn gì? (Đừng bảo là xem trong file nhé!)
E có ghi trên dòng đầu tiên rồi mà a?
Xoá 1 cell hàng ngang bên “danh sach” thì dữ liệu tự chuyển qua sheet “xoa”
Bài đã được tự động gộp:

Thớt muốn cái tương tự như cái này:
View attachment 262987

Chỉ khác là bên kia có thể người ta xoá nhiều dòng một lúc, thớt chỉ xoá một dòng (nhưng ai biết chuyện được voi đòi tiên, về sau lại đổi ý)
E có dùng thử code bên bài đó nhưng lúc dùng macro thì nó ko chạy!
 
Upvote 0
E có ghi trên dòng đầu tiên rồi mà a?
Xoá 1 cell hàng ngang bên “danh sach” thì dữ liệu tự chuyển qua sheet “xoa”
Bài đã được tự động gộp:


E có dùng thử code bên bài đó nhưng lúc dùng macro thì nó ko chạy!
Bạn cần xoá, được, nhưng xóa dòng nào?
- dòng có ô chọn.
- dòng được chỉ định tại ô nào đó.
 
Upvote 0
Bạn cần xoá, được, nhưng xóa dòng nào?
E muốn chọn xoá 1 cell hàng ngang bất kỳ khi xoá. (Cái code đầu tiền macro nó xoá thẳng luôn và không lưu lại trong sheet khác”

Trong file “danh sach” quản lý người của em khi họ không còn ở trọ nữa thì em xoá đi để dễ quản lý danh sách.

Nhưng lúc xoá người đi, em muốn lưu lại trong sheet “xoa” để khi cần thì có thể tìm lại được người trước đây có ở trọ.
 
Upvote 0
Vậy là cần xoá động dòng có ô chọn.

Thử thêm 4 dòng của đoạn code 2 vào trước dòng rng2delete.Entirerow.Delete

With ThisWorkbook.Worksheets("Xoa") '

dongcuoi = .Cells(.Rows.Count, "B").End(xlUp).Row + 1

rng2delete.Entirerow.Copy .Cells(dongcuoi, "B")

End With

(Tôi không ở trên máy tính nên không xem file của bạn)
 
Upvote 0
Khi hỏi bài, tránh viết tắt.
Đối với tôi, a có nghĩa là an-pha (kẻ dẫn đầu), e có nghĩa là ngại (lo sợ), và ko có nghĩa là knocked out (dứt điểm).
 
Upvote 0
Khi hỏi bài, tránh viết tắt.
Đối với tôi, a có nghĩa là an-pha (kẻ dẫn đầu), e có nghĩa là ngại (lo sợ), và ko có nghĩa là knocked out (dứt điểm).
Trong bài hỏi em đâu có viết tắt từ nào?
Còn lúc reply em quen tay viết nhanh nên không kiểm soát được. Xin được rút kinh nghiệm!
 
Upvote 0
Hỏi bài thì lo chú tâm hỏi.
Khả năng lý luận để dùng cho lô gic giải bài hữu ích hơn.

Câu cú viết tắt chỉ làm người đọc nghĩ rằng mình có tánh cẩu thả, chủ quan theo thói quen".
Câu cú chèn tiếng ngoại (*1) càng làm tăng ý nghĩ trên.

(*1) tiếng ngoại: trừ tiếng kỹ thuật, hơi khó dịch cho dễ hiểu.
 
Upvote 0
Em đã thêm vào như anh @Maika8008 nhưng báo lỗi anh ơi.
1.PNG
Bài đã được tự động gộp:

Bỏ đi đoạn code đó thì bấm cái xóa mất luôn một hàng, không Undo lại được luôn.
2.PNG
 
Upvote 0
Bạn cần xoá, được, nhưng xóa dòng nào?
- dòng có ô chọn.
- dòng được chỉ định tại ô nào đó.
Giờ em mới suy nghĩ ra cái em cần.
Là xoá dữ liệu ở cột B đến cột M; hàng bất kỳ.
Dữ liệu vừa xoá sẽ được backup ra một sheet khác. Anh giúp em với!
 
Upvote 0
Giờ em mới suy nghĩ ra cái em cần.
Là xoá dữ liệu ở cột B đến cột M; hàng bất kỳ.
Dữ liệu vừa xoá sẽ được backup ra một sheet khác. Anh giúp em với!
Hàng bất kỳ là hàng nào? Làm sao tôi biết được hàng nào để xóa? Không thấy tôi nêu 2 lựa chọn à? Nếu không phải 1 trong 2 hàng đó thì phải nói là chọn dòng ra sao chứ!
 
Lần chỉnh sửa cuối:
Upvote 0
Hàng bất kỳ là hàng nào? Làm sao tôi biết được hàng nào để xóa? Không thấy tôi nêu 2 lựa chọn à? Nếu không phải 1 trong 2 hàng đó thì phải nói là chọn dòng ra sao chứ!
Anh có thể viết theo cách này được không?
Copy một dòng qua sheet khác rồi em sẽ tự xoá trong "danh sach"
Không nên. Việc nào ra việc ấy.
Nên viết một cái hàm con, tham số là tên sheet để save và một range.
Hàm sẽ xét cái range kia, copy một ô, một dòng hay nhiều dòng (union) tuỳ theo được cho cái gì.
Sau khi gọi hàm này xong thì làm thủ tục xoá.
 
Upvote 0
Anh có thể viết theo cách này được không?
Copy một dòng qua sheet khác rồi em sẽ tự xoá trong "danh sach"
Dòng nào.................?

Tôi xóa dòng 4 cho bạn đấy
Rich (BB code):
Sub Xoa()
Dim DongXoa&, dongcuoi&

DongXoa = 4
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Sheets("Xoa") '
    dongcuoi = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
    Sheet2.Range("B" & DongXoa & ":M" & DongXoa).Copy .Cells(dongcuoi, "B")
End With
Sheet2.Range("A" & DongXoa).EntireRow.Delete
   
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Bạn tự vận dụng để dùng
 
Lần chỉnh sửa cuối:
Upvote 0
@Maika8008 Cảm ơn anh rất nhiều em đã làm thành công.
Chỉ thay chỗ
DongXoa = ActiveCell.Row

Anh làm hoàn mỹ quá, cảm ơn và chúc anh nhiều sức khỏe!
 
Upvote 0
Web KT
Back
Top Bottom