Trước khi đi học lập trình VBA hay bất cứ ngôn ngữ nào, một điều rất quan trọng chúng ta nên chú ý đến là hệ thống các đối tượng ở trong ngôn ngữ lập trình đó. Khi hiểu được hệ thống các đối tượng trong VBA, thì bạn sẽ có được hình dung rõ ràng hơn về cấu trúc của code, sẽ làm việc hiệu quả hơn với từng loại đối tượng.
Xem nhanh
Các đối tượng trong Excel VBA có mối quan hệ cha-con. Ở bậc cao nhất, chúng ta có đối tượng Application, trong trường hợp bạn sử dụng VBA để tương tác với Excel, thì ngầm định đối tượng Application này là đối tượng Excel, và sẽ có những thành phần và phương thức tương ứng. Nếu các bạn sử dụng VBA bên trong môi trường phần mềm Microsoft Access, thì Application này sẽ là đối tượng Access. Trong bài viết này, chúng ta nói về các thành phần đối tượng và phương thức, thuộc tính trong Excel VBA.
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").value = 234
Ví dụ để có thể tham chiếu tới ô A1, sau đó ghi dữ liệu là số 234 vào ô A1 thì chúng ta có thể viết code như dòng trên, tuy nhiên, khi bạn hiểu được cách phân cấp các đối tượng trong Excel VBA, thì bạn có thể rút ngắn đoạn code VBA trên khá nhiều.
Đối tượng Workbooks là một tập hợp các Workbooks Excel đang được mở, là một thành phần con của đối tượng Application. Khi muốn tham chiếu tới Workbooks, thì bạn sử dụng cú pháp
Application.Workbooks("_tên_workbook_")
Thường thì chúng ta có thể bỏ Application, và chỉ tham chiếu tới Workbooks như sau là đủ:
Workbooks("_tên_workbook_")
Lý do cho việc này là, hiếm khi chúng ta sẽ sử dụng cùng nhiều hơn 1 Instances của Excel, và trong 1 Instance của Excel, thì chúng ta không được phép mở Workbook trùng tên.
Mỗi Workbook, lại có thể chứa nhiều đối tượng Worksheets, và bạn có thể tham chiếu tới một Worksheet có tên là “Sheet1” trong File Excel có tên là “Book1.xlsx” như sau:
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")
Tuy nhiên, như lý do đã giải thích ở phần trên, chúng ta có thể yên tâm bỏ Application trong dòng code trên đi. Nếu trong trường hợp, code VBA của bạn chỉ làm việc trong File Excel “Book1.xlsx”, thì chúng ta có thể yên tâm bỏ luôn phần Workbooks(“Book1.xlsx”) đi, bởi vì lúc này, trong cùng một Workbook, thì VBA sẽ biết phải tham chiếu tới Sheet nào:
Worksheets("Sheet1")
Nhưng nếu code VBA của bạn làm việc với nhiều Workbooks, có thể trong những Workbooks này, cũng có Sheet tên là “Sheet1”, thì lúc này, bạn cần tham chiếu tới Sheet1 có kèm theo tham chiếu tới Workbook để code VBA không bị lẫn lộn:
Workbooks("Book1.xlsx").Worksheets("Sheet1")
Sau đối tượng Worksheets, chúng ta có thể tham chiếu tới đối tượng Range, cũng tương tự như kiến thức ở phần trước, nếu code VBA chỉ làm việc với nội dung trên 1 bảng tính duy nhất, thì bạn có thể tham chiếu tới Range rất ngắn gọn:
Range("A1")
Nhưng nếu code VBA của bạn sẽ làm việc với nhiều Sheets khác nhau trong cùng một Workbook, thì chắc chắn tham chiếu của chúng ta tới ô A1, cần phải cụ thể hơn:
Worksheets("Sheet1").Range("A1")
Tương tự như vậy khi bạn làm việc với nhiều Workbooks khác nhau, thì chúng ta cần viết đầy đủ “đường dẫn” tới đối tượng Range của chúng ta:
Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1")
Các thành phần và phương thức, cũng như thuộc tính, hay hằng số của mỗi đối tượng rất nhiều, nhưng thật may mắn, ngay phía bên trong trình soạn thảo code VBA của chúng ta đã có chức năng để chúng ta có thể tra cứu được, để mở các cửa sổ này, khi đang ở bên trong trình soạn thảo code VBA, bạn hãy bấm nút F2 trên bàn phím (Nếu không được, hãy thử bấm FN + F2 )
Trong cửa sổ này, bạn có thể tìm kiếm các đối tượng trong Excel VBA và tra cứu các thông tin liên quan đến các thuộc tính, phương thức và những hằng số như hình trên.
Các đối tượng và thuộc tính của VBA trong Excel rất nhiều, vậy làm thế nào để bạn có thể tiết kiệm thời gian tra cứu và lập trình tự động hóa được ngay những công việc bạn vẫn mong muốn? Hãy đồng hành cùng Thanh trong các khóa học VBA nâng cao năng suất công việc:
Khóa học VBA cơ bản:
Tự động hóa Excel với lập trình VBA cho người mới bắt đầu
Toàn bộ các khóa học lập trình VBA: