Lập trình VBA - Cách gọi hàm, thủ tục trong Excel, Ribbon, VBA, Phím tắt

Liên hệ QC

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,536
Giới tính
Nam
Hôm nay tôi chia sẻ các bạn một kiến thức tuy đơn giản nhưng có thể các bạn chưa nắm bắt được, đó là cách gọi một Hàm, Thủ Tục trong VBA, trong Trang tính Excel Ribbon, hoặc Phím tắt. Với hướng dẫn dưới đây các bạn sẽ hiểu rõ hơn về sự đa dạng cách gọi hàm và thủ tục giúp các bạn tận dụng tối đa VBA để viết mã cho dự án của bạn.


Gọi hàm và thủ tục trong VBA


Có 3 cách gọi hàm trong VBA:
1. Gọi trực tiếp:
JavaScript:
sub Call_HelloWorld()
   Call HelloWorld(1,2)
End Sub
Function HelloWorld(thamSo1,thamSo2)
    HelloWorld = "HelloWorld"
End Function
2. Gọi gián tiếp - Có 3 cách gọi gián tiếp:
  • Gọi với phương thức Run: Trong phương thức Run này lại có hai cách gọi khác nhau
    • Gọi nhận kết quả trả về:
JavaScript:
sub Run_HelloWorld1()
   Dim i
   i = Application.Run("HelloWorld",1,2)
   Debug.Print "Run: " i
End Sub
  • Gọi không có kết quả trả về:
JavaScript:
sub Run_HelloWorld1()
   Call Application.Run("'HelloWorld 1,2'")
End Sub


  • Gọi với phương thức OnTime:
JavaScript:
Sub OnTime_HelloWorld()
   Call Application.OnTime(Now, "'HelloWorld 1,""2""'")
End Sub
  • Gọi với phương thức Evaluate
JavaScript:
Sub Evaluate_HelloWorld()
   Call Application.Evaluate("HelloWorld(1,2)")
End Sub
(Nhược điểm của Evaluate là không thể thực thi trực tiếp mã thao tác và hành động nào đó, chỉ trả giá trị)
3. Gọi với phương thức CallByName:
CallByName hỗ trợ gọi hàm và thủ tục trong các Lớp, Đối tượng, ...
Ví dụ:
CallByName(UserForm1, "handle", vbGet)
CallByName(ThisWorkbook, "Workbook_SheetSelectionChange", vbGet, Sheet1, Cell1)
Cách gọi hàm từ bất kì Workbook nào đến mã trong Workbook gốc:
Call Application.Run("'" & book.Name & "'!HelloWorld",1,2)
Hoặc
Call Application.Run("'" & book.Name & "'!'HelloWorld 1,""2""'")

Gọi trong Trang tính
Có hai cách gọi hàm và thủ tục trong trang tính:
  1. Gõ hàm vào ô trang tính: =HelloWorld(1,2)
  2. Gán hàm vào một đối tượng: (Chuột phải vào đối tượng chọn Assign Macro... )
    Nhập lệnh: 'HelloWorld 1,2'

Gọi trên Thanh Công Cụ - Ribbon

Đơn giản như trên chỉ cần nhập 'HelloWorld 1,""2""' vào thuộc tính onAction trong XML
Gọi trong Popup MenuContext

Đơn giản chỉ cần gán control.OnAction = 'HelloWorld 1,""2""'
Gọi với Phím Tắt

Đơn giản chỉ cần gán Application.OnKey "^+k", 'HelloWorld 1,""2""'​



Gọi trong Excel ở tiến trình khác

JavaScript:
Sub Evaluate_HelloWorld()
   Call getObject(Book.Fullname).Parent.Run ("'" & Book.Fullname & "'!HelloWorld",1,"2")
End Sub


Mong rằng hướng dẫn trên đây có thể giúp các bạn biết cách gọi hàm và thủ tục ở bất kỳ đâu, và sẽ giúp ích cho các dự án tương lai của bạn. Chúc thành công!

Các bạn có thể đọc thêm các bài viết của tôi tại tag #sanbi udf
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom