Đây tôi giải thích:
Lưu ý là ở bài này thót dùng cách gọi sub (gọi hàm thì phải có biến để nhận cái mà hàm trả về)
Nhưng gọi hàm hay sub đều vậy:
- Khi Call thì mọi tham số đều phứa chưa trong hai dấu ngoặc đánh dầu chữ ký (signature) của sub
- Khi invoke (tức là gọi không qua lệnh Call) thì mọi tham sô sẽ là dãy liệt kê các tham số không đóng trong ngoặc.
- Mảng trong VBA được truy cập theo tên. Hai dấu ngoặc chỉ sử dụng khi:
-- 1, Dim: khai báo mảng động.
-- 2. Sử dụng trong bất cứ trowngf hợp khai báo mảng động khong qua Dim. Trong chữ ký của hàm nó là mảng động
Trường hợp đăc biệt khi invoke hàm. Đây là điểm quan trọng mà tôi hứa hẹn ở trên:
Khi hàm được gọi, và tham số được đóng trng ngoặc riêng rẽ, thì đó là cách buôc VBA phải dùng một copy của tham sô (VBA sẽ copy tham này và truyền vào hàm, tương đương với cách truyền ByVal;. Bình thường thì các kiểu biến phức tạp được mặc định truyền ByRef.
Lúc gọi abc, xx được mặc định là ByRef, tức là nó share bộ nhớ với x. ABC sửa xx là gì thì x phải chịu theo
Lúc gọi hàm, x được đóng trong ngoặc cho nên hàm abc chỉ nhận copy của x truyền cho xx theo dạng ByVal. Trị x của t vẫn còn nguyên.
Code ở bài #1 của thớt dùng cách lấy copy của tham số. Mà tham số ở đây là mảng cho nên nó muốn lấy tên mảng thay vì hàm hoặc khai báo mảng - cặp (). Xem lại giải thích về khai báo ở trên.
Chú thích: chữ lý của hàm/sub là phần nằm trong hai dấu ngược ( và ) khi khai báo hàm/sub.
///
Trả lời cho bạn này (không liên quan đến đề bài):
Hic, mỗi người mỗi tính, bác nhẹ nhàng tí cho chúng em nhờ.
...
Tôi đã từng giải thích vài ba lần rồi.
Tôi không phải là dân thích chít chát. Tôi vào đây là như một câu lạc bộ, một thư viện, một chỗ học hỏi. Mẹ tôi từ nhỏ thất học cho nên luôn khuyên tôi tôn trọng cái từ "học". Vì vậy, tôi chỉ có thể giao thiệp tới mức độ nào đó thôi. Tới ;oại ngôn ngữ không thể dùng được trong môi trong .ôi trường lịch sự thì là ngoài phạm vi. Và tôi ngừng ở đó, lằn ranh rất rõ ràng, tôi không bước qua.
Tôi dạy con không dùng tiêng Tây hổ lốn, khong bắt chước lối nói chuyện chưởng, tránh viết tắt. Chẳng lẽ bây giờ tôi nói "con hãy nghe những gì ba nói chứ đừng nhìn những gì ba làm"?