Có thể thiết đặt double click chuột để khởi động một macro đuợc không?

Liên hệ QC

Cu_lan

Thành viên mới
Tham gia
16/3/17
Bài viết
4
Được thích
0
Giới tính
Nữ
Nghề nghiệp
ラヴィS2 501号
Chào mọi người. Em có một file excel như đính kèm, phần liên kết tính toán đã lược bỏ.
Mục đích là tự động copy một textbox mẫu, và chỉnh sửa thông tin trong đó.

Vì cần chỉnh sửa thông tin trong mỗi textbox sau khi thực hiện lệnh copy,
cũng như muốn tự do di chuyển và bố trí các textbox theo ý muốn.
nếu chỉ click chuột mà macro đã khởi động thì khó khăn cho di chuyển textbox,
nên muốn click đúp chuột thì mới khởi động macro, như vậy có cách nào làm được không?

Mong mọi người giúp đỡ.
Nếu đặt sai forums, thì mong admin liên kết giùm nhé. thanks very much
 

File đính kèm

  • vi du.xlsm
    37.8 KB · Đọc: 11
Bạn có thể nhấn chuột phải trước rồi di chuyển Shape, thay vì bạn nhấn chuột trái hoặc nhấp 2 lần chuột trái.
 
Chào mọi người. Em có một file excel như đính kèm, phần liên kết tính toán đã lược bỏ.
Mục đích là tự động copy một textbox mẫu, và chỉnh sửa thông tin trong đó.

Vì cần chỉnh sửa thông tin trong mỗi textbox sau khi thực hiện lệnh copy,
cũng như muốn tự do di chuyển và bố trí các textbox theo ý muốn.
nếu chỉ click chuột mà macro đã khởi động thì khó khăn cho di chuyển textbox,
nên muốn click đúp chuột thì mới khởi động macro, như vậy có cách nào làm được không?

Mong mọi người giúp đỡ.
Nếu đặt sai forums, thì mong admin liên kết giùm nhé. Cảm ơn very much
Tiêu đề một đằng, nội dung một nẽo.
Muốn Copy một hoặc nhiều Shapes đã có sử dụng code để di chuyển và bố trí vào một nơi khác thì có 2 cách:
1/ Nhấn Ctrl rồi click trái chuột chọn vào Shapes để chọn một hoặc vài cái.
2/ Để chọn cùng lúc nhiều Shapes nhấn Ctrl+G > Special > Objects > OK.
 
Bạn có thể nhấn chuột phải trước rồi di chuyển Shape, thay vì bạn nhấn chuột trái hoặc nhấp 2 lần chuột trái.
Tiêu đề một đằng, nội dung một nẽo.
Muốn Copy một hoặc nhiều Shapes đã có sử dụng code để di chuyển và bố trí vào một nơi khác thì có 2 cách:
1/ Nhấn Ctrl rồi click trái chuột chọn vào Shapes để chọn một hoặc vài cái.
2/ Để chọn cùng lúc nhiều Shapes nhấn Ctrl+G > Special > Objects > OK.


Cảm ơn gợi ý của bạn.

Vì mỗi textbox sau khi được copy đã được thiết lập tên, số thứ tự, kể cả màu .v.v.. một cách tự động. Nội dung của mỗi textbox sau khi được chỉnh sửa, sẽ copy tới một trang khác để tính toán.

ví dụ: copy, bố trí và chỉnh sửa khoảng 50 loại textbox A, 15 textbox B, 10 textbox C, 5 texbox D, sau đó bố trí theo bản vẽ kí tự của bàn phím được ADD vào chẳng hạn.

1. Trước hết liên quan tới code và cách sử lý đã tồn tại sẵn trong trương trình. Nếu viết lại, cần nhiều thời gian để viết cũng như kiểm chứng. Như file đính kèm, hiện tại việc chỉnh sửa nội dung textbox thực hiện thủ công, nên muốn thay đổi bằng cách gắn thêm Code và sử lý thêm , để thao tác và nhập liệu thuận tiện, tiết kiệm thời gian và giảm thiểu sai sót.

2. Nếu gắn code và chỉ thực hiện click để gọi code, thì nếu như trên sơ đồ bản vẽ có cả 100 Shapes thì cản trở thao tác khác, dễ kích hoạt nhầm, hiệu suất cv sẽ giảm, cũng như không dễ dàng cho việc di chuyển, và bố trí shapes chứa code tới vị trí như yêu cầu.

3. Ngoài ra thì việc chỉnh sửa kích thước của shapes cho phù hợp với bản vẽ nữa.

Chính vì nhiều lí do như trên, nên yêu cầu giải pháp chỉ kích hoạt code của shapes khi cần, và không cản trở tới các thao tác khác.

( theo giải pháp của bạn thì các shapes or textbox sau khi copy thủ công sẽ không được đánh dấu địa chỉ, cũng như đặt tên tự động để quản lý cho thao tác tiếp theo được)
 
Cảm ơn gợi ý của bạn.

Vì mỗi textbox sau khi được copy đã được thiết lập tên, số thứ tự, kể cả màu .v.v.. một cách tự động. Nội dung của mỗi textbox sau khi được chỉnh sửa, sẽ copy tới một trang khác để tính toán.

ví dụ: copy, bố trí và chỉnh sửa khoảng 50 loại textbox A, 15 textbox B, 10 textbox C, 5 texbox D, sau đó bố trí theo bản vẽ kí tự của bàn phím được ADD vào chẳng hạn.

1. Trước hết liên quan tới code và cách sử lý đã tồn tại sẵn trong trương trình. Nếu viết lại, cần nhiều thời gian để viết cũng như kiểm chứng. Như file đính kèm, hiện tại việc chỉnh sửa nội dung textbox thực hiện thủ công, nên muốn thay đổi bằng cách gắn thêm Code và sử lý thêm , để thao tác và nhập liệu thuận tiện, tiết kiệm thời gian và giảm thiểu sai sót.

2. Nếu gắn code và chỉ thực hiện click để gọi code, thì nếu như trên sơ đồ bản vẽ có cả 100 Shapes thì cản trở thao tác khác, dễ kích hoạt nhầm, hiệu suất cv sẽ giảm, cũng như không dễ dàng cho việc di chuyển, và bố trí shapes chứa code tới vị trí như yêu cầu.

3. Ngoài ra thì việc chỉnh sửa kích thước của shapes cho phù hợp với bản vẽ nữa.

Chính vì nhiều lí do như trên, nên yêu cầu giải pháp chỉ kích hoạt code của shapes khi cần, và không cản trở tới các thao tác khác.

( theo giải pháp của bạn thì các shapes or textbox sau khi copy thủ công sẽ không được đánh dấu địa chỉ, cũng như đặt tên tự động để quản lý cho thao tác tiếp theo được)
--------------------------------



Với 1 triệu Shape đi chăng nữa, bạn chỉ cần Gán một Macro duy nhất cho tất cả Shape mà thôi. Tuy nhiên phải đặt tên Cho Shape, và tên Shape có thể là một thủ tục cần gọi hoặc chứa trong thủ tục cần gọi.

Cách gán cho tất cả Shape như sau: Ấn Ctrl + G -> chọn Object (Đối tượng) -> Chuột phải chọn Assign Macro (Gán Macro)

Tạo một thủ tục như sau:

PHP:
Sub SuperRun()
  If VBA.TypeName(Application.Caller) <> "String" Then Exit Sub

  Select Case Application.Caller
  Case "Shape1": ''Call NewSub1
  Case "Shape2": ''Call NewSub2
  Case "Shape...": ''Call NewSub...
  '' Hoặc đặt tên Shape là tên thủ tục cần gọi:
  Case Else: Application.OnTime, VBA.Now(), "NewSub" & Application.Caller(1), , True
  End Select
End Sub
-------------------------------


Để tạo một Double Click cho một Shape bạn có thể vận dụng phương thức dưới đây:


-------------------------------
PHP:
Sub SuperRun()
  If VBA.TypeName(Application.Caller) <> "String" Then Exit Sub

  '' Thêm thủ tục IsDoubleClick và đặt dòng code như sau:
  If Not IsDoubleClick Then Exit Sub

  Select Case Application.Caller
  Case "Shape1": ''Call NewSub1
  Case "Shape2": ''Call NewSub2
  Case "Shape...": ''Call NewSub...
  Case Else: Application.OnTime, VBA.Now(), "Shape" & Application.Caller(1), , True
  End Select
End Sub

Function IsDoubleClick() As Boolean
  Static EarliestTime As Date
  If EarliestTime + 0.13 > VBA.Timer Then
    EarliestTime = 0: IsDoubleClick = True
  Else
     EarliestTime = VBA.Timer
  End If
End Sub
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom