VBA - Cách tạo một UserForm trong mô-đun lớp
![](http://img.brin-designs.com/img/games/759/vba-how-create-userform-class-module.png)
- Điều kiện tiên quyết
- Mật mã
- Các mô-đun lớp
- Chức năng gọi
Điều kiện tiên quyết
Chuyển đến Tùy chọn Excel > Quản lý tin cậy > Cài đặt macro và đảm bảo tùy chọn sau được bật: Truy cập tin cậy vào mô hình đối tượng dự án VBA .Mã này cũng yêu cầu các tham chiếu bên dưới là Thư viện đối tượng Microsoft Forms 2.0 và Microsoft Visual Basic cho các ứng dụng mở rộng 5.3 . Bạn có thể kích hoạt chúng bằng cách nhấp vào menu Công cụ của trình soạn thảo VBA và sau đó vào Tài liệu tham khảo .
Mật mã
Trong ví dụ này, chúng tôi sẽ tạo một biểu mẫu người dùng chứa hai nút. Khi nhấp vào nút này, chú thích của họ sẽ được hiển thị trong mã của chức năng gọi.Các mô-đun lớp
Tạo một mô-đun lớp trong dự án VBA của bạn, đặt tên là PremierExemple (thuộc tính ClassName) và chèn mã này:Tùy chọn rõ ràng'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
'Kích hoạt các tham chiếu sau (Công cụ> Tài liệu tham khảo)
'Thư viện đối tượng Microsoft Forms 2.0
'Microsoft Visual Basic cho các ứng dụng mở rộng 5.3
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
MaForm công khai dưới dạng đối tượng
Public WithEvents Bouton As MSForms.CommandButton 'Nút
Dico công cộng như đối tượng 'Objet Dictionnary = Bộ sưu tập đối tượng
Nom Nom As String 'Nom => tạo hoặc xóa định dạng người dùng
Lớp con riêng_Initialize ()
'tạo lớp
Đặt Dico = CreateObject ("Scripting.dixi")
Kết thúc phụ
Giá trị chức năng công cộng ()
'Phương thức Value de notre Classe cho phép tạo biểu mẫu người dùng
'và trả về một giá trị
NewUsf "Mon hàng đầu UserForm" 'tạo biểu mẫu người dùng
NewBouton "toto", "TOTO", 120, 30, 5, 5 'tạo nút TOTO
NewBouton "Titi", "TITI", 120, 30, 5, 35 'tạo nút TITI
maForm.Show 'hiển thị dạng người dùng
Trên Lỗi GoTo vây
Value = maForm.Tag 'gán giá trị có trong Thẻ của biểu mẫu người dùng cho chức năng của chúng tôi.
Dỡ bỏ maForm
Chức năng thoát
vây:
Chức năng kết thúc
Private Sub NewUsf (monCaption As String)
'Tạo định dạng người dùng
Đặt maForm = ThisWorkbook.VBProject.VBComponents.Add (3)
Nôm na = maForm.
VBA.UserForms.Add (Nôm na)
Đặt maForm = UserForms (UserForms.Count - 1)
Với maForm
.Caption = monCaption
.Width = 150
.Hight = 100
Kết thúc với
Kết thúc phụ
Public Sub NewBouton (Tên dưới dạng chuỗi, chú thích dưới dạng chuỗi, chiều rộng là gấp đôi, chiều cao là gấp đôi, trái là gấp đôi, trên cùng là gấp đôi)
'Tạo nút điều khiển
Dim Obj
Đặt Obj = maForm.Controls.Add ("Forms.CommandButton.1")
Nếu Obj = True thì thoát Sub
Dim cls như PremierExemple mới
Đặt cls.maForm = maForm
Đặt cls.Bouton = Obj
Với cls.Bouton
.Name = Tên
.Caption = Chú thích
. Di chuyển sang trái, trên cùng, chiều rộng, chiều cao
Kết thúc với
Tên Dico. Thêm, cls
Đặt cls = Không có gì
Kết thúc phụ
Riêng Bouton_Click ()
'thủ tục sự kiện cho nút bấm
maForm.Tag = Bouton.Caption
maForm.
Kết thúc phụ
Lớp con riêng tư_ermine ()
'xóa lớp
Dim VBComp Như VBComponent
Đặt Dico = Không có gì 'xóa tất cả các phiên bản của lớp chúng tôi => tất cả các nút
Nếu Nom "" Then 'nếu đó là dạng người dùng (phiên bản duy nhất có thuộc tính "Nom" được điền)
Đặt tìm kiếm VBComp = ThisWorkbook.VBProject.VBComponents (Nom) '
ThisWorkbook.VBProject.VBComponents.Remove VBComp 'xóa
Kết thúc nếu
Kết thúc phụ
Chức năng gọi
Quy trình cho chức năng gọi được đơn giản hóa rất nhiều ... nhờ mô-đun lớp, bạn có quyền truy cập vào biểu mẫu người dùng và phương thức Giá trị. Nó được trả về một cách đơn giản, sử dụng mã gọi dưới đây:Kiểm tra phụ ()Dim MyForm là PremierExemple mới
MsgBox MyForm. Giá trị
Đặt MyForm = Không có gì
Kết thúc phụ