sao bạn lập nhiều topic thếChào mọi người !
Hiện tại em có file excel có các dòng dữ liệu. Em muốn khi dùng chuột khoanh 2 vùng dữ liệu thì dữ liệu tự hoán đổi với nhau.
Để hiểu rỏ hơn anh chị xem file đính kèm.
Nhờ anh chị GPE giúp đỡ ạ
Cảm ơn nhiều.
tại mình đăng nhầm. rồi chưa xóa bên kia đượcsao bạn lập nhiều topic thế
cảm ơn anh đã giúp đỡ, a giúp thêm giùm e coppy thẳng hàng với lệch xéo với ạ.Bạn xem file. Nếu 2 vùng không cùng cỡ thì nó im chứ không thông báo gì đâu nhé
Không phải ý kiến của người hỏi là luốn phải làm theo. Có nhiều lúc người hỏi không đủ kiến thức để nhìn thấy những cách dễ hơn.Xem file mà chẳng biết bạn muốn gì. Phải có từ ngữ để mô tả chứ để cái mũi tên thẳng hàng, xéo thì hiểu chết liền.
Thấy bài #9 gợi ý cũng thú vị, tôi làm thử (có thể code không hay vì khả năng có hạn) để chủ thớt tùy ý kéo thả.cảm ơn anh đã giúp đỡ, a giúp thêm giùm e coppy thẳng hàng với lệch xéo với ạ.
anh xem file đính kèm.
Theo tôi hiểu thì code của bạn là chuyển dữ liệu 1 vùng sang chỗ khác, còn chủ thớt muốn hoán đổi 2 vùng với nhau. Nếu dùng code của bạn thì tôi nghĩ phải làm 3 bước: chọn và kéo A1:A9 sang vd. D1: D9 (mục đích để sau đó có cái nhập vào C1:C9) -> chọn và kéo C1:C9 sang A1:A9 -> chọn và kéo D1: D9 sang A1:A9.Thấy bài #9 gợi ý cũng thú vị, tôi làm thử (có thể code không hay vì khả năng có hạn) để chủ thớt tùy ý kéo thả.
Yêu cầu khi kéo thả để hoán đổi 2 vùng: Phải bấm CANCEL khi Excel cảnh báo ghi đè
???Em muốn khi dùng chuột khoanh 2 vùng dữ liệu thì dữ liệu tự hoán đổi với nhau
Việc tôi đang làm là chọn 1 vùng (nhiều dòng 1 cột), xong kéo thả sang vùng muốn hoán đổi thì 2 vùng sẽ hoán đổi với nhau.Theo tôi hiểu thì code của bạn là chuyển dữ liệu 1 vùng sang chỗ khác, còn chủ thớt muốn hoán đổi 2 vùng với nhau. Nếu dùng code của bạn thì tôi nghĩ phải làm 3 bước: chọn và kéo A1:A9 sang vd. D1: D9 (mục đích để sau đó có cái nhập vào C1:C9) -> chọn và kéo C1:C9 sang A1:A9 -> chọn và kéo D1: D9 sang A1:A9.
Tôi chỉ ý kiến cho bạn thôi. Vấn đề của chủ thớt có thể giải quyết nhưng tôi không thích những kiểu hỏi bài như thế.
???
Người ta không nói rõ là họ muốn thao tác như thế nào. Vd.
1. Chọn A1:A9 -> giữ Ctrl và chọn tiếp C1:C9 -> nhấn phím tắt nào đấy thì thực hiện hoán đổi 2 vùng?
2. Nhấn phím tắt thì code sẽ hiển thị InputBox để chọn vùng 1 -> sẽ hiển thị InputBox để chọn vùng 2. Tiếp theo code hoán đổi 2 vùng?
Cảm ơn anh đã giúp đỡ. xin lỗi vì em mới hết covid nên phản hồi trể.Việc tôi đang làm là chọn 1 vùng (nhiều dòng 1 cột), xong kéo thả sang vùng muốn hoán đổi thì 2 vùng sẽ hoán đổi với nhau.
xin lỗi anh vì em mới tìm hiểu vba nên còn nhiều cái không biết, không biết diễn tả như thế nào cho dể hiểu.Theo tôi hiểu thì code của bạn là chuyển dữ liệu 1 vùng sang chỗ khác, còn chủ thớt muốn hoán đổi 2 vùng với nhau. Nếu dùng code của bạn thì tôi nghĩ phải làm 3 bước: chọn và kéo A1:A9 sang vd. D1: D9 (mục đích để sau đó có cái nhập vào C1:C9) -> chọn và kéo C1:C9 sang A1:A9 -> chọn và kéo D1: D9 sang A1:A9.
Tôi chỉ ý kiến cho bạn thôi. Vấn đề của chủ thớt có thể giải quyết nhưng tôi không thích những kiểu hỏi bài như thế.
???
Người ta không nói rõ là họ muốn thao tác như thế nào. Vd.
1. Chọn A1:A9 -> giữ Ctrl và chọn tiếp C1:C9 -> nhấn phím tắt nào đấy thì thực hiện hoán đổi 2 vùng?
2. Nhấn phím tắt thì code sẽ hiển thị InputBox để chọn vùng 1 -> sẽ hiển thị InputBox để chọn vùng 2. Tiếp theo code hoán đổi 2 vùng?
Nếu cách chọn như tôi đã yêu cầu thì code ở dưới.xin lỗi anh vì em mới tìm hiểu vba nên còn nhiều cái không biết, không biết diễn tả như thế nào cho dể hiểu.
ý của em giống như ý 1. khi dùng chuột chọn vùng A1:A9 sau đó nhấn chọn vùng C1:C9 thì 2 vùng sẻ hoán đổi với nhau. nhưng số lượng row và column không cố định ạ.
, sh As Worksheet ' xóa khai báo sh
...
Set sh = Selection.Parent
sh.Copy sh
sh.Activate
Sub hoan_doi()
Dim tmp, sh As Worksheet
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Areas.Count < 2 Then Exit Sub
Set sh = Selection.Parent
sh.Copy sh
sh.Activate
tmp = Selection.Areas(2).Resize(Selection.Areas(1).Rows.Count, Selection.Areas(1).Columns.Count).Value
Selection.Areas(2).Resize(Selection.Areas(1).Rows.Count, Selection.Areas(1).Columns.Count).Value = Selection.Areas(1).Value
Selection.Areas(1).Value = tmp
End Sub
Bạn có thể nêu ví dụ?Nhu cầu hoán đổi 2 vùng là có, dù không phổ biến....
Tôi thấy tụi Tây cũng hỏi về việc này nên mới nói nhu cầu là có. Từ câu trả lời trong 1 diễn đàn, tôi có tải về 1 file, sẽ gửi lên đây để mọi người tham khảo.Bạn có thể nêu ví dụ?
Trừ loại dạng bảng tính lotto, hay dạng báo cáo ma.
Tụi Tây = tụi nào vậy?Tôi thấy tụi Tây cũng hỏi về việc này nên mới nói nhu cầu là có. Từ câu trả lời trong 1 diễn đàn, tôi có tải về 1 file, sẽ gửi lên đây để mọi người tham khảo.
...
Tôi đâu có biết Tây nào là Tây nào. Chỉ thấy họ hỏi đáp bằng tiếng Anh thì nói vậy thôi. Bằng chứng là cái file tôi lôi về đấy.Tụi Tây = tụi nào vậy?
Tôi chỉ nói là nghĩ không ra. Vì theo luật bảng tính chuẩn, các cột đâu có thể đổi nhau được. Chứ cái chuyện trái luật cũng có thể xảy ra.
Bạn lái xe bên trái là phạm luật đi đường. Nhưng xe cứu thương thì vẫn được phép. Tôi chỉ hỏi trường hợp cứu thương ấy ra sao mà phải dùng macro thôi.
Ở bài #14, tôi nêu ra cách làm thủ công để chứng minh rằng macro chỉ tiết kiệm cho bạn tối đa là 20 giây. Kéo một cái rờ mọt (macro) tổ bố (bắt sự kiện) để làm chuyện này là không đáng. Thành phố mà xe chữa lửa phải chạy cả chục lần một ngày thì thành phố phải xây lại, mở thêm chi nhánh cứu hoả là sai lầm.