VBA - Sao chép, Dán sau đó xóa khỏi trang tính cũ


1

Tôi có một bảng tính cho phép người dùng dán dữ liệu vào và sau đó dán nó vào một bảng ẩn trong sổ làm việc điều khiển bảng xoay. Điều này được thực hiện bằng nút lệnh.

Mã của tôi chọn dữ liệu trong phạm vi cho đến hàng cuối cùng, sau đó dán nó vào hàng tiếp theo mà không có dữ liệu trong bảng tính khác. Sau đó tôi đang cố gắng xóa dữ liệu khỏi bảng tải lên sau đó đã hoàn thành. Tất cả mọi thứ hoạt động bên cạnh việc xóa dữ liệu. Không chắc chắn những gì sai. Tôi cũng đã thử sử dụng 'Cắt' thay vì sao chép, nhưng có kết quả tương tự. Một số trợ giúp sẽ được đánh giá cao.

Sub TestingPaste()

    Application.ScreenUpdating = False
    Dim lst As Long

    Sheets("Upload Data").Range(Range("A2:N2"), Range("A2:N2").End(xlDown)).Copy
    With Sheets("Test")
        lst = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range("A" & lst).PasteSpecial xlPasteColumnWidths
        .Range("A" & lst).PasteSpecial xlPasteValues
        Sheets("Upload Data").Range(Range("A2:N2"), Range("A2:N2").End(xlDown)).Clear
    End With

    Application.ScreenUpdating = True

End Sub

Điều gì xảy ra nếu bạn di chuyển Sheets("Upload Data" ... dòng bên ngoài With Sheets("Test") khối?
mcalex

Xin lỗi tôi nên đề cập đến tôi cũng đã thử điều đó, không có gì xảy ra cả. Không có lỗi, dường như bỏ qua dòng .clear
user767772

Mã ở trên dưới dạng Sub phụ độc lập (Macro) hoạt động tốt trên Excel 2013 của tôi. Bạn đã thử chỉ chạy một câu lệnh 'Sheets ("Tải lên dữ liệu") ... .Clear' dưới dạng Sub và xem liệu nó có xóa các hàng trước không địa điểm? Đây có phải là mã cuối cùng như dự định hoặc mã mẫu mà bạn đang hiển thị làm ví dụ không? Mã dưới nút lệnh trong câu hỏi là gì? Có thể bắt đầu truy tìm từ kết thúc đó?
patkim

Thử Sheets("Upload Data").Range(Sheets("Upload Data").Range("A2:N2"), Sheets("Upload Data").Range("A2:N2").End(xlDown)).CopySheets("Upload Data").Range(Sheets("Upload Data").Range("A2:N2"), Sheets("Upload Data").Range("A2:N2").End(xlDown)).Clear
BruceWayne

Câu trả lời:


0

Cảm ơn mọi người. @BruceWayne, cảm ơn vì lời khuyên. Tôi đã sử dụng một số đề xuất của bạn, nhưng thấy rằng sau khi phụ đã hoàn thành, nó để lại người dùng trên trang 'kiểm tra'. Tôi đã thêm Sheets("Upload Data").Select để đưa người dùng trở lại bảng tải lên. Dưới đây là kết quả cuối cùng cho bất cứ ai quan tâm.

Dim lst As Long

Sheets("Upload Data").Range(Range("A2:N2"), Range("A2:N2").End(xlDown)).Copy
With Sheets("Test")
    lst = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lst).PasteSpecial xlPasteColumnWidths
    .Range("A" & lst).PasteSpecial xlPasteValues
    Sheets("Upload Data").Range(Sheets("Upload Data").Range("A2:N2"), Sheets("Upload Data").Range("A2:N2").End(xlDown)).Clear
End With

    Sheets("Upload Data").Select

Application.ScreenUpdating = True

End Sub
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.