Có đoạn code nào biến mọi thao tác dán thành Paste Values không?

Liên hệ QC

nghiaphuc

Thành viên gạo cội
Thành viên danh dự
Tham gia
25/9/09
Bài viết
5,729
Được thích
8,854
Giới tính
Nam
Nghề nghiệp
Giáo viên
Mình có làm một chương trình quản lý điểm cho trường và mình gặp một vấn đề như sau:
Trong bảng tính, mình đã định dạng nhất quán khung, nền, font chữ, cỡ chữ, CF,... rồi, nhưng khi giáo viên copy điểm từ file điểm cá nhân của họ vào chương trình (vì đây là chương trình dùng chung cho tất cả các môn, các lớp) thì những định dạng ban đầu của mình thường bị biến đổi. Mặc dù nó chẳng làm thay đổi gì chức năng của chương trình (trừ những thứ liên quan đến Validation) nhưng về mặt thẩm mỹ thì rất khó chịu.
Thực tế thì mình đã hướng dẫn rất nhiều lần về thao tác Paste Values, thậm chí mình còn kéo nút Paste Values lên thanh Menu và đặt phím tắt cho nó, nhưng có lẽ do thói quen khó bỏ nên thường thì giáo viên cứ nhấn nút Paste hoặc nhấn Ctrl+V để dán.
Vậy, xin hỏi: Liệu có đoạn code nào có thể biến mọi thao tác dán thành Paste Values không? Ít nhất là biến 2 thao tác: nhấn nút Paste và nhấn Ctrl+V thành Paste Values.
Rất mong nhận được câu trả lời của các anh, chị, em.
Xin chân thành cảm ơn!
 
Thì ra cái "mẹt" nó như thế ---> Nhìn cũng "ngồ ngộ" quá chứ (Excel 2007 và 2010, mấy cái menu ấy nó cho vào 1 tab mới có tên là Add-Ins)
Ẹc... Ẹc...
TTo Admin: dạo này sao chuyển hình lên đây bằng nút Insert Image sao không được (From URL), để ý rất nhiều lần trong thời gian gần đây rồi!
Xem bài này nhé:
http://www.giaiphapexcel.com/forum/showthread.php?72088-Không-thể-Edit-hình-đã-post
 
Upvote 0
Thì ra cái "mẹt" nó như thế ---> Nhìn cũng "ngồ ngộ" quá chứ (Excel 2007 và 2010, mấy cái menu ấy nó cho vào 1 tab mới có tên là Add-Ins)
Ẹc... Ẹc...

Từ khi có dãy Ribbon thì mọi menu, toolbar tự tạo nó đều nhóm vào một tab Add-Ins tất cả, trừ khi dùng ngôn ngữ java để can thiệp lên Ribbon.


Theo hướng dẫn thì đã làm được, tuy nhiên có quá nhiều "công cụ" bị lỗi hoặc "nửa vời", BQT cũng nên test lại, nếu dùng được thì show ra, còn không (như table, như insert image ...) thì ẩn các chức năng này luôn cho rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Từ khi có dãy Ribbon thì mọi menu, toolbar tự tạo nó đều nhóm vào một tab Add-Ins tất cả, trừ khi dùng ngôn ngữ java để can thiệp lên Ribbon.



Theo hướng dẫn thì đã làm được, tuy nhiên có quá nhiều "công cụ" bị lỗi hoặc "nửa vời", BQT cũng nên test lại, nếu dùng được thì show ra, còn không (như table, như insert image ...) thì ẩn các chức năng này luôn cho rồi.

2007 thì mình ko nhớ vì ko làm qua việc thêm công cụ, nhưng 2010 thì khác à nha, có thể đặt thêm công cụ tự tạo ở mõi nơi, tốt nhất là 1 tab mới mà vị trí tab tuỳ chọn, đặt biệt là các ACE nào thường tạo thêm nút nhấn để chảy các code thì nó vô cùng dễ dàng

vào option ribbbon > khung trái chọn macro, khung phải tuỳ chọn tab, bạn thêm 1 tab mới, sau đó cứ add macro là xong mõi việc mà không cần sự dụng đến java gì hết
 
Upvote 0
2007 thì mình ko nhớ vì ko làm qua việc thêm công cụ, nhưng 2010 thì khác à nha, có thể đặt thêm công cụ tự tạo ở mõi nơi, tốt nhất là 1 tab mới mà vị trí tab tuỳ chọn, đặt biệt là các ACE nào thường tạo thêm nút nhấn để chảy các code thì nó vô cùng dễ dàng

vào option ribbbon > khung trái chọn macro, khung phải tuỳ chọn tab, bạn thêm 1 tab mới, sau đó cứ add macro là xong mõi việc mà không cần sự dụng đến java gì hết

Ác cái đây chỉ là thao tác bằng tay! Nếu viết thành code để tự động hóa quá trình thao tác này thì... Ẹc... Ẹc... đếch biết làm thế nào
 
Upvote 0
Ác cái đây chỉ là thao tác bằng tay! Nếu viết thành code để tự động hóa quá trình thao tác này thì... Ẹc... Ẹc... đếch biết làm thế nào

đúng là các bật thầy, đã tiện lợi rồi còn muốn tiện lợi thêm, viết code để nghiêm cứu chứ, nếu bình thường sử dụng thì khi viết được code lại người ta đã lụm đi mất rồi
<code chỉ nên sự dụng trong trường hợp lập lại sử dụng thường xuyên thôi> nhưng nếu các thầy nào đã viết rồi thì cho các em đây xin để học với
 
Upvote 0
đúng là các bật thầy, đã tiện lợi rồi còn muốn tiện lợi thêm, viết code để nghiêm cứu chứ, nếu bình thường sử dụng thì khi viết được code lại người ta đã lụm đi mất rồi
<code chỉ nên sự dụng trong trường hợp lập lại sử dụng thường xuyên thôi> nhưng nếu các thầy nào đã viết rồi thì cho các em đây xin để học với

Chưa đúng, đôi khi viết code để "nuôi quân 3 năm, dụng 1 giờ" đấy bạn à.
 
Upvote 0
Từ khi có dãy Ribbon thì mọi menu, toolbar tự tạo nó đều nhóm vào một tab Add-Ins tất cả, trừ khi dùng ngôn ngữ java để can thiệp lên Ribbon.

Nếu ta làm gì đó cho ta thì ta làm bằng tay hoặc bằng code viết trong VBE, tùy theo lựa chọn. Nhưng nếu ta viết cho người khác, cả những người không am tường lắm về phần mềm, thì ta tự làm luôn.
Menu có thể tạo bằng code viết trong VBE, cũng có thể không viết code để tạo menu trong VBE - nhưng phải có code phục vụ click - bằng việc dùng Custom UI Editor. Khi đó có thể thêm menu vào nút Office, vào thẻ đã có sẵn vd. thẻ Home, hoặc thêm thẻ mới vào Ribbon.

À, việc test đến đâu rồi Nghĩa?
 
Upvote 0
Nếu ta làm gì đó cho ta thì ta làm bằng tay hoặc bằng code viết trong VBE, tùy theo lựa chọn. Nhưng nếu ta viết cho người khác, cả những người không am tường lắm về phần mềm, thì ta tự làm luôn.
Menu có thể tạo bằng code viết trong VBE, cũng có thể không viết code để tạo menu trong VBE - nhưng phải có code phục vụ click - bằng việc dùng Custom UI Editor. Khi đó có thể thêm menu vào nút Office, vào thẻ đã có sẵn vd. thẻ Home, hoặc thêm thẻ mới vào Ribbon.

À, việc test đến đâu rồi Nghĩa?

Anh cho em thêm thời gian kiểm chứng, bởi em chưa phát hiện ra lỗi hoặc nó đã hoàn hảo chăng?
 
Upvote 0
Anh cho em thêm thời gian kiểm chứng, bởi em chưa phát hiện ra lỗi hoặc nó đã hoàn hảo chăng?

Thật ra không có thứ gì có thể hoàn hảo 100%
Chẳng hạn code mà ta đang quan tâm, nếu ta Ctrl + X (thay vì Ctrl + C) thì.. tính sao?
(Với Copy/Cut/Paste thông thường thì khi Ctrl + X, Excel sẽ không cho phép Paste Special)
 
Upvote 0
Thật ra không có thứ gì có thể hoàn hảo 100%
Chẳng hạn code mà ta đang quan tâm, nếu ta Ctrl + X (thay vì Ctrl + C) thì.. tính sao?
(Với Copy/Cut/Paste thông thường thì khi Ctrl + X, Excel sẽ không cho phép Paste Special)


Chắc Thầy sẽ có ý định cải tiến thêm nữa chứ!? Vì Thầy nhìn xa trông rộng nên thường làm các hàm, thủ tục rất tổng quát.

À, em nói với Anh Siwtom là ở đề tài này ạ:

http://www.giaiphapexcel.com/forum/...-về-hàm-UDF-Filter2DArray&p=448740#post448740
 
Upvote 0
Chắc Thầy sẽ có ý định cải tiến thêm nữa chứ!? Vì Thầy nhìn xa trông rộng nên thường làm các hàm, thủ tục rất tổng quát.

Tạm sửa thằng này:
Mã:
If Application.CutCopyMode Then PutDataToClipboard
Thành vầy xem:
Mã:
If Application.CutCopyMode [COLOR=#ff0000]= xlCopy[/COLOR] Then PutDataToClipboard
 
Upvote 0
em đang sử dụng các đoạn code paste value trên rất tiện, tuy nhiên nếu ctr V lần 2 (sau khi copy xong thì báo lỗi) có cách nào fix lỗi này không
 
Lần chỉnh sửa cuối:
Upvote 0
em đang sử dụng các đoạn code paste value trên rất tiện, tuy nhiên nếu ctr V lần 2 (sau khi copy xong thì báo lỗi) có cách nào fix lỗi này không

Trong topic này có rất nhiều đoạn code, cụ thể bạn đã dùng đoạn code nào, của bạn viết số mấy?
 
Upvote 0
Mọi người ơi cho mình hỏi với!
Mình là một giáo viên mức độ excel còn kém quá. Mình có một tình huống thế này:
Mình dùng cột tổng kết trung bình môn cho các môn bằng công thức. Sau đó muốn lấy giá trị hiển thị trong ô đó copy và paste vào sheet khác để tính toán tiếp. Nhưng mình dùng chức năng Paste Values thì nó copy giá trị thực của ô đó. Ví dụ ô đó là 10:3 và hiển thị là 3.3 thì khi paste nó hiểu giá trị là 3.3333333333. Mình chỉ muốn lấy giá trị 3.3 để tính toán chứ không muốn lấy công thức và cũng không muốn lấy giá trị thực của nó ( không muốn lấy giá trị 3.333333333) thì phải làm thế nào vậy? Mình giờ chỉ có cách thủ công là paste vào word và copy lại vào excel thôi.
Rất mong ý kiến trả lời. Cảm ơn trước rất nhiều!
 
Upvote 0
Trong topic này có rất nhiều đoạn code, cụ thể bạn đã dùng đoạn code nào, của bạn viết số mấy?
đây em dùng 3 cái này

[GPECODE=vb]Sub Auto_Open()
Application.OnKey "^v", "PasteValue"
CommandBars.FindControl(ID:=22).OnAction = "PasteValue"
CommandBars.FindControl(ID:=6002).Enabled = False
End Sub
Sub PasteValue()
Selection.PasteSpecial 3
End Sub
Sub Auto_Close()
With Application
.OnKey "^v"
.CommandBars("Standard").Reset
.CommandBars("Cell").Reset
.CommandBars("Edit").Reset
End With
End Sub[/GPECODE]

nếu ấn 2 lần ctr V thì nó thông báo lỗi
 
Upvote 0
đây em dùng 3 cái này

[GPECODE=vb]Sub Auto_Open()
Application.OnKey "^v", "PasteValue"
CommandBars.FindControl(ID:=22).OnAction = "PasteValue"
CommandBars.FindControl(ID:=6002).Enabled = False
End Sub
Sub PasteValue()
Selection.PasteSpecial 3
End Sub
Sub Auto_Close()
With Application
.OnKey "^v"
.CommandBars("Standard").Reset
.CommandBars("Cell").Reset
.CommandBars("Edit").Reset
End With
End Sub[/GPECODE]

nếu ấn 2 lần ctr V thì nó thông báo lỗi
Thế sao bạn không dùng code của những bài viết mới nhất?
Xem file này nhé
Cách dùng:
- Khởi động file, bạn sẽ thấy trên thanh menu có xuất 1 menu mới (nếu dùng Excel 2003) hoặc sẽ thấy 1 tab mới tên là Add-Ins với 1 cái nút (nếu dùng Excel 2007 hoặc Excel 2010)
- Bấm vào nút để kích hoạt sự kiện Paste Values
- Tiến hành thí nghiệm copy gì đó rồi paste sang nơi khác xem có thật sự là nó đang Paste Values không
- Nếu muốn mọi thứ trở về mặc định, bấm nút lần nữa (để reset sự kiện Paste Values)
 

File đính kèm

  • PasteValues_Reg_3.rar
    17.2 KB · Đọc: 176
Upvote 0
Thế sao bạn không dùng code của những bài viết mới nhất?
Xem file này nhé
Cách dùng:
- Khởi động file, bạn sẽ thấy trên thanh menu có xuất 1 menu mới (nếu dùng Excel 2003) hoặc sẽ thấy 1 tab mới tên là Add-Ins với 1 cái nút (nếu dùng Excel 2007 hoặc Excel 2010)
- Bấm vào nút để kích hoạt sự kiện Paste Values
- Tiến hành thí nghiệm copy gì đó rồi paste sang nơi khác xem có thật sự là nó đang Paste Values không
- Nếu muốn mọi thứ trở về mặc định, bấm nút lần nữa (để reset sự kiện Paste Values)



Thầy ndu96081631 và các Bạn có thể giúp Em khi mở file nên là nó tự động kích hoạt sự kiện Paste Values được không ạ. (Ko có nhiều lúc Em hay quên) Mong Thầy và các Bạn giúp đỡ Em. Cảm ơn Thầy và các Bạn nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Thầy ndu96081631 và các Bạn có thể giúp Em khi mở file nên là nó tự động kích hoạt sự kiện Paste Values được không ạ. (Ko có nhiều lúc Em hay quên) Mong Thầy và các Bạn giúp đỡ Em. Cảm ơn Thầy và các Bạn nhiều!

Cái này dễ mà!
Trong Module của file trên có đoạn:
Mã:
Sub Auto_Open()
  On Error Resume Next
  With Application.CommandBars(1)
    .Reset
    With .Controls.Add(1)
      .Caption = "Start Paste Values"
      .OnAction = "Event_Start"
      .FaceId = 22
    End With
  End With
End Sub
Sửa thành vầy:
Mã:
Sub Auto_Open()
  On Error Resume Next
  With Application.CommandBars(1)
    .Reset
    With .Controls.Add(1)
      .Caption = "Start Paste Values"
      .OnAction = "Event_Start"
      .FaceId = 22
    End With
  End With
  [COLOR=#ff0000][B]Event_Start[/B][/COLOR]
End Sub
Chổ màu đỏ là chổ thêm vào
 
Upvote 0
Em xin lỗi vì đã đào mộ vì em không biết làm thế nào để có thể làm được trên file exel của em. Em đã thử copy toàn bộ code qua file của mình, save dưới định dạng .xlsm và nhận được lỗi:
err.jpg

Kính nhờ các anh / chị giúp đỡ hướng dẫn em với ạ.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom