HeSanbi
Nam Nhân✨Hiếu Lễ Nghĩa Trí Tín✨
- Tham gia
- 24/2/13
- Bài viết
- 2,382
- Được thích
- 3,539
- Giới tính
- Nam
Chắc chắn 100% những ai đã từng gán hơn 100 macro vào Shape, label, button,.. sẽ nói "tuyệt quá, tuyệt vời quá"
Có phải bạn đang tạo một Đối tượng rồi gán một Macro vào đối tượng đó để thực hiện một tác vụ nào đó, cứ mỗi đối tượng là mỗi Macro khác nhau. Nếu như Dự án của bạn có đến Hàng trăm, có khi hàng nghìn Đối tượng cần gán Macro như vậy. Thật là vất vả phải không các bạn?
(Đối tượng bao gồm Hình ảnh, Label, Button, ...)
Bài viết này tôi sẽ hướng dẫn cho các bạn chỉ cần gán một Macro duy nhất vào tất cả các Đối tượng mà bạn cần gán vào.
Nhiều bạn học lập trình VBA có thể chưa biết khi Macro được gọi từ một Đối tượng trong trang tính Excel thì tên của Shape sẽ được trả về ngay lúc gọi là phương thức Application.Caller. Chính vì vậy mà ta có thể gán duy nhất một Macro vào tất cả các Đối tượng đó.
Hướng dẫn:
Tạo một Macro SuperCall chung cho tất cả các đối tượng mà phương thức Application.Caller nhận được tên của đối tượng đó.
Gán toàn bộ Đối tượng với Macro SuperCall.
Đổi tên từng đối tượng sao cho tên phải khác nhau.
(đổi tên bằng Code VBA nếu cần để nhanh hơn)
Code hướng dẫn:
---------------------
Dùng Code để gán Macro cho toàn bộ các đối tượng:
---------------------
-------------------
Ở trên tôi đã hướng dẫn cho các bạn tạo duy nhất một Macro cho tất cả Đối tượng. Và tôi có những bài viết về VBA các bạn có thể tham khảo thêm bằng cách vào trang cá nhân của tôi trên Giải Pháp Excel này.
Chúc các bạn thành công!
Có phải bạn đang tạo một Đối tượng rồi gán một Macro vào đối tượng đó để thực hiện một tác vụ nào đó, cứ mỗi đối tượng là mỗi Macro khác nhau. Nếu như Dự án của bạn có đến Hàng trăm, có khi hàng nghìn Đối tượng cần gán Macro như vậy. Thật là vất vả phải không các bạn?
(Đối tượng bao gồm Hình ảnh, Label, Button, ...)
Bài viết này tôi sẽ hướng dẫn cho các bạn chỉ cần gán một Macro duy nhất vào tất cả các Đối tượng mà bạn cần gán vào.
Nhiều bạn học lập trình VBA có thể chưa biết khi Macro được gọi từ một Đối tượng trong trang tính Excel thì tên của Shape sẽ được trả về ngay lúc gọi là phương thức Application.Caller. Chính vì vậy mà ta có thể gán duy nhất một Macro vào tất cả các Đối tượng đó.
Hướng dẫn:
Tạo một Macro SuperCall chung cho tất cả các đối tượng mà phương thức Application.Caller nhận được tên của đối tượng đó.
Gán toàn bộ Đối tượng với Macro SuperCall.
Đổi tên từng đối tượng sao cho tên phải khác nhau.
(đổi tên bằng Code VBA nếu cần để nhanh hơn)
Code hướng dẫn:
PHP:
Sub SuperCall()
If VBA.TypeName(Application.Caller) <> "String" Then Exit Sub
Select Case Application.Caller
''------------------------------
''Tên đối thường là:
Case "NewShape1"
''Thì thực hiện
Select Case ActiveSheet.Name
Case "Sheet1": MsgBox "Clicked NewShape1 Sheet1"
Case "Sheet2": MsgBox "Clicked NewShape1 Sheet2"
Case Else:
MsgBox "Any Sheet"
End Select
Case "NewShape2": Call HelloWorld_Call
''------------------------------
''Nếu tên của đối tượng cũng là tên của một thủ tục thì:
Case Else: Application.OnTime VBA.Now(), Application.Caller
''------------------------------
End Select
End Sub
Sub SuperShape1()
MsgBox "Clicked SuperShape1"
End Sub
Sub HelloWorld_Call()
MsgBox "Call HelloWorld_Call"
End Sub
Sub Group1_Shape1()
MsgBox "Call Group1_Shape1"
End Sub
Dùng Code để gán Macro cho toàn bộ các đối tượng:
---------------------
PHP:
Sub AssignMacroAll()
'(BoÒ dâìu ' ðêÒ doÌng code ðýõòc thýòc hiêòn)
On Error Resume Next
Dim WS, O
For Each WS In Worksheets
''Gán cho tâìt caÒ Shape
''WS.DrawingObjects.OnAction = "SuperCall"
For Each O In WS.DrawingObjects
''Nêìu ðôìi týõòng có chýìa tên thiÌ gán
''If O.name Like "*Rectangle*" Then .OnAction = "SuperCall"
''Nêìu ðôìi týõòng ðaÞ ðýõòc gán Macro týÌ trýõìc ðó thiÌ gán thành SuperCall
''If .OnAction <> "" Then .OnAction = "SuperCall"
''Nêìu ðôìi týõòng ðaÞ ðýõòc gán Macro týÌ trýõìcthiÌ không làm giÌ caÒ, coÌn laòi thiÌ ...
''If .OnAction = "" Then
'' .OnAction = "..."
''End iF
Next
Next
End Sub
Ở trên tôi đã hướng dẫn cho các bạn tạo duy nhất một Macro cho tất cả Đối tượng. Và tôi có những bài viết về VBA các bạn có thể tham khảo thêm bằng cách vào trang cá nhân của tôi trên Giải Pháp Excel này.
Chúc các bạn thành công!
Lần chỉnh sửa cuối: