Đứng ở sheet này gọi private sub của sheet khác chạy, có thể không? (1 người xem)

Người dùng đang xem chủ đề này

boydaigai

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
8/9/11
Bài viết
58
Được thích
12
Câu hỏi của e như tiêu đề ạ%#^#$%#^#$%#^#$
 
Cho nên mình nghĩ là không thể gọi từ sheet khác

Được chứ!
Ta có code tại Sheet1:
Mã:
Private Sub Test()
  MsgBox "Hello"
End Sub
Tại bất kỳ nơi nào khác (trong cùng file này), ta có thể gọi Test bằng cách này
Mã:
Application.Run "Sheet1.Test"
Thậm chí gọi được luôn ngay cả khi sub Test là dạng Sub có tham số truyền
(tự nghiên cứu nhé)
 
Upvote 1
Trong VBA Help nói thế này
Private Sub indicates that the Sub procedure is accessible only to other procedures in the module where it is declared.
Cho nên mình nghĩ là không thể gọi từ sheet khác

Accessibility áp dụng cho compiler. Tức là một hàm hay phương thức xưng là Private sẽ không nhìn thấy được ngoài vùng của nó (outside the module where it í declared). Vì không nhìn thấy được cho nên compiler sẽ báo lỗi.

VBA cho phép dùng lệnh/hàm Application.Run để thực hiện việc gọi phương thức mà compiler không nhìn thấy. Tham số của Application.Run là string, lúc chạy thì hàm này mới parse nó để kết nối cho nên chả liên quan gì đến việc compiler có nhìn thấy nó hay không.
 
Upvote 0

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

Back
Top Bottom