image

Class trong VBA là gì?

Một lớp là một bản thiết kế cho một đối tượng sẽ được tạo. Bản thân một lớp không làm gì ngoài việc sử dụng các lớp, bạn có thể tạo nhiều đối tượng giống hệt nhau có thể thực hiện các hoạt động hoặc có thể được sử dụng như một tài nguyên dữ liệu.

Trong cuộc sống thực, kiểu dáng (thiết kế và chức năng) của ô tô là một hạng và bản thân chiếc ô tô là một đối tượng của hạng đó. Trong lớp học, chúng tôi xác định những gì chiếc xe có trong đó và những gì nó có thể làm. Ví dụ, một chiếc ô tô có 4 bánh, 5 bánh răng, vô lăng,… Đây là các thuộc tính / thuộc tính.

Chúng tôi cũng xác định những gì một chiếc ô tô có thể làm, như tiến, lùi, rẽ, v.v. Đây là những chức năng của hạng ô tô. Một đối tượng car được tạo bằng car class, sẽ có tất cả các thuộc tính này. Nếu bạn xác định một chiếc ô tô có 5 bánh thì chiếc ô tô được tạo ra bằng cách sử dụng lớp này sẽ có 5 bánh. Bạn sẽ có được điểm.

Lý thuyết là đủ, bây giờ chúng ta hãy xem cách bạn có thể sử dụng một mô-đun lớp trong VBA.

Sử dụng mô-đun lớp VBA trong Excel

Trong khi làm việc trong VBA, bạn phải sử dụng Range (“A1”). Select. Phạm vi là lớp được xác định trước trong VBA. Lựa chọn là một trong những chức năng của lớp Phạm vi chọn phạm vi được chỉ định. Tương tự, Debug là một lớp trong VBA và in và khẳng định là các phương thức của nó. Trang tính, Sổ làm việc, Phạm vi, v.v. tất cả đều là các lớp VBA mà chúng tôi sử dụng trong đăng ký của mình.

image

Tạo lớp của riêng bạn

Đầu tiên, chúng ta cần thêm một module lớp trong VBA Nhấn tổ hợp phím ALT + F11 để mở trình soạn thảo VBA trong excel.

  • Nhấp chuột phải vào trình khám phá dự án. Di chuyển con trỏ đến Chèn → Mô-đun lớp. Nhấn vào nó. Điều tương tự có thể được thực hiện từ menu Chèn.

image

  • Lớp học sẽ được thêm vào thư mục “Lớp học”. Tên mặc định giống như class1, class2, v.v. Bạn có thể thay đổi tên lớp từ cửa sổ thuộc tính. Hãy đặt tên lớp của chúng ta là “Chào mừng”.

image

Bây giờ hãy tạo thêm một số thuộc tính cho lớp của chúng ta. Vì tôi muốn các thuộc tính này có sẵn cho mọi người, tôi đã sử dụng toán tử trợ năng * công khai.

Public name As String

Public var1 As Integer

Public var2 As Integer
  • Bây giờ hãy thêm một hàm vào lớp này. Tôi muốn một chức năng cho biết Hi! cho người dùng. Để làm như vậy, hãy thêm một phụ và đặt tên nó là sayHiTo.

Sub sayHiTo(user As String)

name = user

MsgBox ("Hi! " & name)

End Sub
  • Bây giờ chúng ta hãy sử dụng lớp trong một mô-đun. Chèn một mô-đun mới nếu bạn chưa có. Viết phụ. Tôi đã đặt tên là Test phụ của tôi.

Sub test()

Dim wc As New Welcome 'Declared and initialized Welcome object

wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object.

End Sub
  • Chạy thử nghiệm phụ này bằng cách sử dụng phím F5. Nó sẽ nhắc “Hi! Jack” trên sổ làm việc excel.

image

Nó hoạt động như thế nào?

Trong Sub Test, chúng tôi đã tạo ra một đối tượng “wc” của Welcomeclass. Một đối tượng được tạo trong VBA theo hai phương thức. chúng tôi chạy mã, Kiểm tra phụ tạo một đối tượng wc của lớp Chào mừng. Đối tượng này có tất cả các thuộc tính của lớp Chào mừng. Chúng tôi sử dụng phương thức sayHiTo của lớp Chào mừng để chào người dùng.

Tạo đối tượng trong Excel VBA

  1. .. Tạo tức thì Trong tạo tức thì, chúng ta tạo một đối tượng trong khi khai báo đối tượng bằng khóa “mới”. Trong ví dụ của chúng tôi ở trên, chúng tôi đã sử dụng tính năng tạo tức thì.

Dim wc As New Welcome

{trống} 2. Tạo trì hoãn Trong tạo trì hoãn, trước tiên chúng ta chỉ khai báo đối tượng. Chúng tôi không sử dụng từ khóa “mới”. Để sử dụng đối tượng, chúng ta cần khởi tạo nó bằng từ khóa “new”.

Sub test()

Dim wc As Welcome

'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet

'initialising object

Set wc = New Welcome

wc.sayHiTo ("Cory") 'this will work.

End Sub

Truy cập các biến của một lớp

Trong các ví dụ trên, chúng ta đã sử dụng biến public cho class nhưng thực tế là sai. Chúng ta nên tránh sử dụng các biến công khai trong một lớp.

Bây giờ câu hỏi đặt ra là chúng ta sẽ truy cập các biến của lớp như thế nào. Trước đó, chúng ta đã sử dụng chương trình con để truy cập tên nhưng các lớp VBA cung cấp các thuộc tính được sử dụng để cập nhật và truy xuất các giá trị biến private của lớp một cách có hệ thống. Các thuộc tính thanh lịch hơn sub hoặc hàm để cập nhật và truy cập các biến riêng. Hãy xem làm thế nào.

Cú pháp của thuộc tính lớp

Private name As String

Private var1 As Integer

Private var2 As Integer

Property Let MyName(nm As String)

name = nm

End Property

Property Get MyName() As String

MyName = name

End Property

Hãy sử dụng chúng trong một mô-đun.

Sub test()

'creating class object

Dim wc As New Welcome

Dim wc1 As New Welcome



'using properties

wc.MyName = "Exceltip.com"

wc1.MyName = "ExcelForum.com"



Debug.Print wc.MyName

Debug.Print wc1.MyName



End Sub

Khi bạn chạy thử nghiệm phụ này, bạn sẽ nhận được hai tên được in cho hai đối tượng của lớp “Chào mừng”.

Thuộc tính khác với chức năng và phụ

Trong ví dụ trên, hãy lưu ý rằng chúng ta đã sử dụng thuộc tính MyName như một biến. Chúng tôi khởi tạo giá trị của biến “Name” chỉ bằng cách viết wc.MyName = “assdf”. Dòng lệnh này được gọi là thuộc tính có tênProperty Get MyName () As String. Chúng tôi đã không chuyển bất kỳ giá trị nào trong dấu ngoặc đơn như lúc đầu.

Tương tự, để in các giá trị của biến “Name”, chúng ta sử dụng commandDebug.Print wc.MyName. Nó không đơn giản như khởi tạo biến bình thường phải không? Sự khác biệt duy nhất là bạn có thể làm được rất nhiều điều trong phân khúc sản phẩm. Bạn đặt xác thực dữ liệu, tính toán, giao tiếp, v.v. và người dùng sẽ chỉ thấy kết quả.

Một sự khác biệt nữa là chúng ta có thể sử dụng cùng một tên của thuộc tính để cho và nhận * một phần. Điều này làm cho nó dễ dàng hơn và ít nhầm lẫn hơn.

Vâng thưa các bạn, đây là một ví dụ đơn giản về mô-đun lớp trong Excel VBA.

Đây chỉ là phần nổi của tảng băng chìm, còn rất nhiều điều cần thiết trong chủ đề này mà chúng ta sẽ khám phá trong các bài viết sau. Chúng ta sẽ khám phá từng cái một theo cách dễ dàng nhất có thể. Tôi hy vọng tôi đã giải thích đủ để làm cho bạn hiểu điều này. Nếu bạn có bất kỳ nghi ngờ nào liên quan đến chủ đề này hoặc bất kỳ chủ đề VBA excel nào khác, hãy đề cập đến nó trong phần nhận xét bên dưới.

Bài viết liên quan:

Bài viết phổ biến:

Bạn không cần lọc dữ liệu của mình để đếm giá trị cụ thể. Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.