Đổi chỗ 2 cell bất kì của bảng tính

huutinh85

Yêu THVBA nhất
Mình muốn kéo một cell bất kì đến vị trí mới khi thả ra thì 2 cell này đổi chỗ cho nhau ( kể cả định dang, và dữ liệu ; giống như sắp xếp icons trên màn hình iphone ). Hiện tại mình mới tìm hiểu trên mạng thì cũng có cách làm phải chọn 2cell muốn hoán đổi rồi chạy code chứ chưa thể kéo thả được. Mình cũng có tìm hiểu chức năng đó trong EXCEL nhưng chỉ áp dụng cho cell cùng hàng, cùng cột, cell bất kì thì giống như chèn vào 1 cell mới .Không biết các cao nhân có giải pháp gì không ? Đây là demo nên dữ liệu của mình ít, thực tế rất nhiều. Cảm ơn các bác đã quan tâm
Bạn cần đăng nhập để thấy đính kèm

 

Euler

Administrator
Thành viên BQT
1. Thao tác kéo thả cells là không có.
Trên UserForm thì làm được. Có thể kéo thả để hoán đổi vị trí.
Chưa hiểu ý tưởng của bạn, nhưng dựa vào ý tưởng bạn trình bày, tôi cho rằng làm trên Userform thì tốt hơn.
2. Nếu nhất thiết phải làm trên cells. Thì khi đó thao tác người dùng sẽ là:
Click vào cells 1.
Click vào cells 2.
=> Đổi số liệu và định dạng cho nhau.
Vậy, bạn chọn phương án nào.
 

huutinh85

Yêu THVBA nhất
@Euler trong file em đăng lên cũng có làm phương thức chọn cell 1; cell2 và chọn code để đổi chỗ, nhưng cái này cũng hơi lâu với bảng nhiều dữ liệu. Ở đây em chỉ muốn đổi chỗ từng cell riêng lẻ chứ không phải là đổi chỗ hàng loạt .Sau khi đổi chỗ nhìn được toàn bảng tính nên em muốn làm trên celll. Mục đích chinhs là thay việc bấm code trong file thì chỉ cần kéo thả cho nhanh. Với Form thì em chưa hình dung ra như thế nào? Nhưng nghe bác nói như vậy chắc nó không có phương thức kéo thả rồi phải không bác!
 
Sửa lần cuối:

Euler

Administrator
Thành viên BQT
Bạn chơi game kéo thả từ vựng bao giờ chưa. Từ A có nghĩa B. Kéo A lại với B thì ăn điểm ấy. Làm với form nhìn đẹp và dễ code. Không biết cái bảng của bạn có phải là thời khóa biểu không. Nếu chỉ có vài dòng với vài cột thế kia, thì bê lên form cho dễ làm.
 
S

Snow24

Guest
huutinh85
Bạn thử cái này nó là sự kiện khi chọn 2 lần vào 1 ô.Khi bạn chọn lần đầu vào ô đó xong bạn chọn tiếp theo vào ô khác code nó sẽ hoán đổi vị trí.Mình làm chưa bẫy lỗi bạn tets xem còn lỗi gì mình chỉnh tiếp.
 

vbano1

SMod
Thành viên BQT
Tuy không phải là thao tác kéo thả. Nhưng tôi thấy file của @huutinh85 đưa lên đã đáp ứng yêu cầu của bạn đấy thôi.
Bạn giữ phím ctr, và click chọn vào hai cells bất kỳ, không cần cùng hàng cùng cột, ấn Hoán Đổi, thì là hoán đổi rồi đấy thôi.
Bạn cần đăng nhập để thấy hình ảnh
 

vbano1

SMod
Thành viên BQT
Ra là thế. Thế đằng nào chẳng phải giữ vào phím Ctr để chọn hai cells.
Vậy thì dùng luôn để thực thi macro cho nhanh, nhất cử lưỡng tiện.
 

Euler

Administrator
Thành viên BQT
File của @Snow24 dùng không nuột lắm. Thao tác hơi rườm rà. (Cảm nhận với tư cách người dùng). Nên bớt thao tác đi thì hay hơn.
Có vẻ phương án Ctr+C+C trong trường hợp này ổn đấy chứ.
 

huutinh85

Yêu THVBA nhất
@Snow24 , @Euler ,@vbano1 em muốn giống như bác @Snow24 nói là kéo thả thôi, không dùng Shape. Vd em kéo ô A4 đến vị trí của ô C8 và thả chuột thì 2 cell nayd ổi chỗ cho nhau đó bác @vbano1 ạ. Giống như mình di chuyển các icon trên màn hình Ipad, iPhone đó ạ.
 

huutinh85

Yêu THVBA nhất
@Snow24 dạ bác không biết trên máy của bác thế nào trên máy của e nhiều khi chon nhưng code chạy nhưng có khi không chay, nên nhièu khi thao tác 4-5 lần 1 ô bác ạ. E không biết có phải do máy của e hay không?
 

tuhocvba

Administrator
Thành viên BQT
Bạn thử file này. Nếu file này đáp ứng được nhu cầu của bạn thì tôi sẽ giải thích code ở bài viết sau.
Link download:

Bạn cần đăng nhập để thấy hình ảnh


Cách sử dụng: Hãy chạy thủ tục: SetShortcut
Bằng cách: Đặt con trỏ vào trong chương trình và ấn F5.
Mục đích: Thiết định phím tắt Ctr+R cho macro.

Chạy chương trình một lần, rồi sau đó cứ thế sử dụng file là được.

Cách sử dụng, chọn hai cells bất kỳ rồi ấn ctr+r để đổi chỗ.
Ở đây tôi thực thi cho thử hoán đổi vị trí hai vùng Range thấy cũng được nữa.

Thực thi thủ tục RemoveShotrCut để hủy bỏ phím tắt Ctr+R.

Chú ý: Chỉ thay đổi được hai vùng Range trên và dưới, trái và phải nhưng không đứng cạnh nhau tạo nên một vùng Range liên tục.
Nếu hai vùng Range mà hợp lại được với nhau thì không xài được. Ví dụ không thể đổi chỗ A1 và A2 cho nhau. Hoặc B1 và B2 cho nhau.
Hoặc A1 và B1 cho nhau.
 

vbano1

SMod
Thành viên BQT
Tôi đã lấy luôn file của @huutinh85 và thiết định phím tắt ctr+r cho nó.
Bạn thử xem sao nhé.
Link download:
Bạn cần đăng nhập để thấy hình ảnh



Cách sử dụng: Hãy chạy thủ tục: SetShortcut
Bằng cách: Đặt con trỏ vào trong chương trình và ấn F5.
Mục đích: Thiết định phím tắt Ctr+R cho macro.

Chạy chương trình một lần, rồi sau đó cứ thế sử dụng file là được.

Cách sử dụng, chọn hai cells bất kỳ rồi ấn ctr+r để đổi chỗ.
(Copy hướng dẫn sử dụng của bài trên-vì giống nhau)

Thực thi thủ tục RemoveShotrCut để hủy bỏ phím tắt Ctr+R.
 

huutinh85

Yêu THVBA nhất
Cảm ơn các bác @tuhocvba , @vbano1 , @Snow24 .. file về cơ bản chạy ổn, các bác đã thay thao tác chọn shape bằng tổ hợp Ctr + R rút ngắn được thao tác trên file , hy vọng sẽ có cách tối ưu hơn.!
 
Top