Em xin code vba để chạy macro mà tên macro chứa trong 1 cell của 1 sheet ạ.

  • Thread starter Thread starter AlanEvol
  • Ngày gửi Ngày gửi
Liên hệ QC

AlanEvol

Thành viên mới
Tham gia
19/8/21
Bài viết
23
Được thích
3
Em chứa tên của macro trong 1 cell. Em muốn dùng lệnh để gọi macro này ra ạ.
Bài đã được tự động gộp:

 
Nếu là thủ tục bạn gọi hàm CallBy, nếu là hàm trả kết quả thì gọi hàm ReturnBy, như sau
CallBy ThisWorkbook.Sheets("Shee1").Range("A1")
a = ReturnBy(ThisWorkbook.Sheets("Shee1").Range("A1"))
Hoặc thêm tham số:
CallBy ThisWorkbook.Sheets("Shee1").Range("A1"), 50, 50
a = ReturnBy(ThisWorkbook.Sheets("Shee1").Range("A1"), 50, 50)

Bạn có thể sử dụng Application.Run và Application.Ontime để gọi một thủ tục toàn cục (Public)

Bạn cũng có thể sử dụng Phương thức Application.Evaluate như sau:
A1 phải có giá trị như procedure() hoặc procedure(1), procedure phải là hàm Excel hoặc hàm VBA tự tạo
a = Application.Evaluate("=" & ThisWorkbook.Sheets("Shee1").Range("A1"))


PHP:
Function CallBy(ParamArray i())
  Dim j%, s$: j = Ubound(i)
  s = "'" & ThisWorkbook.Name & "'!"
  Select case j
  Case 1: Application.Run s & i(0), i(1)
  Case 2: Application.Run s & i(0), i(1), i(2)
  Case 3: Application.Run s & i(0), i(1), i(2), i(3)
  Case 4: Application.Run s & i(0), i(1), i(2), i(3), i(4)
  Case 5: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6)
  Case 6: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7)
  Case 7: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6)
  Case 8: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7)
  Case 9: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7), i(8)
  Case 10: Application.Run s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7), i(8), i(9)
  Case else: Application.Run s & i(0)
  End select
End Function
Function ReturnBy(ParamArray i())
  Dim j%, s$, v: j = Ubound(i)
  s = "'" & ThisWorkbook.Name & "'!"
  Select case j
  Case 1: v = Application.Run (s & i(0), i(1))
  Case 2: v = Application.Run (s & i(0), i(1), i(2))
  Case 3: v = Application.Run (s & i(0), i(1), i(2), i(3))
  Case 4: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4))
  Case 5: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6))
  Case 6: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7))
  Case 7: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6))
  Case 8: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7))
  Case 9: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7), i(8))
  Case 10: v = Application.Run (s & i(0), i(1), i(2), i(3), i(4), i(5), i(6), i(7), i(6), i(7), i(8), i(9))
  Case else: v = Application.Run( s & i(0))
  End select
  ReturnBy = v
End Function
 
Tên macro ở một cell mà còn chưa biết lấy.. ấy ấy.
Ái chà chà.
 
Web KT

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

Back
Top Bottom