Quy trình riêng tư và công khai của VBA (Chức năng và chức năng phụ)

Hướng dẫn này sẽ giải thích sự khác biệt giữa khai báo công khai và riêng tư trong VBA và cách chỉ định mô-đun là riêng tư.

Thủ tục phụ công khai và riêng tư

Các thủ tục (Sub và Functions) có thể được khai báo Riêng tư hoặc Công khai trong VBA. Nếu chúng ở chế độ Công khai, điều đó có nghĩa là bạn có thể nhìn thấy chúng từ bên trong Cửa sổ Macro Excel và chúng có thể được gọi từ bất kỳ đâu trong Dự án VBA của bạn. Nếu chúng là Riêng tư, chúng không thể được nhìn thấy trong Cửa sổ Macro Excel và chỉ có sẵn để được sử dụng trong Mô-đun mà chúng được khai báo (sử dụng các phương pháp thông thường, hãy xem phần cuối của bài viết này để biết cách truy cập các thủ tục riêng tư từ các mô-đun khác) .

Các hàm công khai có thể được gọi giống như các hàm Excel dựng sẵn trong trang tính Excel.

Ghi chú: Biến và Hằng cũng có thể là Công khai hoặc Riêng tư.

Cửa sổ Macro Excel

Theo mặc định, Macro Excel (hầu hết các Thủ tục VBA) được hiển thị cho người dùng sổ làm việc trong Cửa sổ Macro:

Đây được coi là Công cộng các thủ tục. Bạn có thể xác định rõ ràng các thủ tục là công khai bằng cách thêm “Công khai” trước câu lệnh Phụ:

123 Public Sub HelloWorld ()MsgBox "Xin chào thế giới"Kết thúc Sub

Nếu bạn không xác định quy trình là Công khai, quy trình đó sẽ được coi là Công khai.

Để khai báo một thủ tục là Riêng tư, chỉ cần thêm "Riêng tư" trước câu lệnh phụ của thủ tục:

123 Sub riêng HelloEveryone ()MsgBox "Xin chào mọi người"Kết thúc Sub

Quy trình thứ hai sẽ không hiển thị trong cửa sổ Macro đối với người dùng Excel, nhưng vẫn có thể được sử dụng trong mã VBA của bạn.

Thủ tục với các đối số

Các thủ tục phụ có thể có các đối số. Các đối số là đầu vào cho thủ tục con:

123 Xin chào Sub (strName dưới dạng chuỗi)MsgBox "Xin chào" & strNameKết thúc Sub

Nếu một thủ tục con có các đối số, nó sẽ không bao giờ xuất hiện trong Cửa sổ Macro bất kể nó có được khai báo Công khai hay không vì không có cách nào để khai báo các đối số.

Các hàm cũng sẽ không bao giờ xuất hiện trong Macro Window, bất kể chúng có được khai báo là Public hay không.

Các hàm công khai trong Excel có thể được sử dụng trực tiếp trong trang tính dưới dạng 'Hàm do Người dùng Xác định' (UDF). Về cơ bản, đây là một công thức tùy chỉnh có thể được gọi trực tiếp trong một trang tính. Chúng có thể được tìm thấy trong danh mục ‘Người dùng xác định’ trong cửa sổ ‘Chèn hàm hoặc có thể được nhập trực tiếp vào một ô.

Lập trình VBA | Code Generator làm việc cho bạn!

Sử dụng quy trình giữa các mô-đun trong Dự án VBA của bạn

Các thủ tục công khai có thể được gọi từ bất kỳ mô-đun hoặc biểu mẫu nào trong Dự án VBA của bạn.

Cố gắng gọi một thủ tục riêng tư từ một mô-đun khác sẽ dẫn đến lỗi (Lưu ý: xem phần cuối của bài viết này để biết cách khắc phục).

Ghi chú: Các thủ tục và biến công khai trong mô-đun lớp hoạt động hơi khác và nằm ngoài phạm vi của bài viết này.

Các mô-đun khác nhau, có thể lưu trữ các thủ tục có cùng tên, miễn là cả hai đều riêng tư.

Nếu hai hoặc nhiều thủ tục có cùng tên và được khai báo công khai, bạn sẽ gặp lỗi biên dịch 'Đã phát hiện tên mơ hồ' khi chạy mã.

Mô-đun riêng

Theo mặc định, các mô-đun là công khai.

Để đặt mô-đun ở chế độ riêng tư, bạn đặt từ khóa sau ở đầu mô-đun.

1 Tùy chọn Mô-đun Riêng tư

Nếu bạn khai báo một mô-đun là riêng tư, thì mọi thủ tục trong mô-đun sẽ không hiển thị cho người dùng Excel. Các thủ tục hàm sẽ không xuất hiện trong cửa sổ Chèn Hàm nhưng vẫn có thể được sử dụng trong trang tính Excel miễn là người dùng biết tên của hàm!

Các thủ tục phụ sẽ không xuất hiện trong Cửa sổ Macro nhưng vẫn có sẵn để sử dụng trong dự án VBA.

Truy cập một thủ tục riêng tư từ một mô-đun khác

Như đã đề cập ở trên, các Thủ tục Riêng tư không thể truy cập được trong các mô-đun mã khác bằng các phương pháp “bình thường”. Tuy nhiên, bạn có thể truy cập các thủ tục riêng tư bằng cách sử dụng Application.Run lệnh có sẵn trong VBA.

Hãy xem xét 3 mô-đun sau.

Mô-đun 2 là một Riêng tư Mô-đun với một Công cộng Thủ tục phụ, trong khi Mô-đun 3 là Công cộng mô-đun với một Riêng tư Thủ tục phụ.

Trong Module1, chúng ta có thể gọi Hello World - Tùy chọn Mô-đun Riêng tư ở trên cùng không ngăn chúng ta gọi Thủ tục phụ - tất cả những gì nó phục vụ là ẩn Thủ tục phụ trong Cửa sổ Macro.

Chúng tôi cũng không cần câu lệnh Call - nó ở đó để làm cho mã dễ đọc hơn.

Mã cũng có thể trông giống như sau:

1234 Sub CallHelloFromPrivate ()'gọi một phụ từ Mô-đun Riêng tưChào thế giớiKết thúc Sub

Chúng tôi cũng có thể chạy Thủ tục phụ HelloWorld bằng cách sử dụng VBA Application.Run chỉ huy.

Tuy nhiên, trong Module 3, thủ tục GoodMorningWorld đã được tuyên bố là Riêng tư. Bạn không thể gọi nó từ một mô-đun khác bằng cách sử dụng ‘bình thường’ nghĩa là câu lệnh Gọi.

Bạn phải sử dụng Application.RunCommand để chạy một Sub riêng tư từ một mô-đun khác.

1234 Sub CallGoodMorning ()'chạy một phụ cá nhân từ một mô-đun công khaiApplication.Run ("GoodMorningWorld")Kết thúc Sub

Lưu ý khi bạn sử dụng Application.RunCommand lệnh, bạn phải đặt tên Thủ tục phụ trong dấu phẩy ngược.

Nếu chúng tôi cố gắng sử dụng câu lệnh Gọi để chạy Thủ tục phụ GoodMorningWorld, sẽ xảy ra lỗi.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave