Mã bên dưới đang cố gắng dán phạm vi đã chọn (được chuyển thành rng
) vào cuối trang tính. Nó hoạt động nếu đã có 2 hàng (A1, A2).Excel vba - xlDown
Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub
Vì vậy, nếu A1 và A2 có mặt và nếu bạn gọi phương thức này 100 lần, nó sẽ chèn 100 hàng sau hàng. Nhưng, nếu không có hàng nào hiện diện hoặc chỉ A1, nó chỉ ghi đè A2. Tôi có thể thấy excel viết trên cùng một hàng (ghi đè)
Xuất hiện, điều gì đó liên quan đến cách xlDown tính toán nếu có ít hơn 2 hàng, không chắc chắn.
Mọi trợ giúp sẽ được đánh giá cao.
+1 để giải thích rõ điều đó. Vì nó là, tôi chưa bao giờ được ủng hộ bằng cách sử dụng "ws.Range (" A1 "). End (xlDown)" để thiết lập một phạm vi. Lý do là, Nó không cho (khá dễ hiểu) phạm vi chính xác nếu có một ô trống ở giữa. :) –
Tony, cảm ơn sự giúp đỡ của bạn. Nó làm việc cho tôi. Về phần đầu tiên, tại sao tôi đã làm theo cách đó, tôi đã theo dõi mục 18 http://support.microsoft.com/kb/291308. Ngạc nhiên khi thấy không có cách dễ dàng để làm điều này. cảm ơn aga. – bsr
@SiddharthRout .. hoặc tệ hơn ô cuối cùng nếu hàng trống. Tìm kiếm tốt hơn nhiều, nhưng vẫn cần một thử nghiệm để đảm bảo phạm vi dữ liệu quan tâm không được để trống. ['Find' có thể dễ dàng hơn] (http://stackoverflow.com/q/4872512/641067) tùy thuộc vào những gì cần thiết – brettdj