Form Control trong VBA: So sánh Form Control và ActiveX Control
Trong bài này mình sẽ hướng dẫn cách sử dụng Form Control trong VBA, đây là một trong những nhóm Control được dùng khá phổ biến và nhiều người hay nhầm lẫn với ActiveX Control.
Trong Excel có hai nhóm đối tượng form, thứ nhất là Form Control và thứ hai là ActiveX Control. Hay nhóm này tùy có cách thể hiện bên ngoài giống nhau nhưng bản chất bên trong thì lại khác nhau. Vì vậy cuối bài mình sẽ có một mục so sánh sự khác nhau giữa Form Control và ActiveX Control nhé.
1. Form Control là gì?
Form Control là một nhóm các đối tượng mà bạn có thể đặt vào trong trang tính Excel, nhằm mục đích tương tác với người dùng thông qua những sự kiện mà người dùng tác động vào những đối tượng đó.
Bạn có thể sử dụng những đối tượng này để giúp người dùng chọn dữ liệu. Ví dụ bạn cần lên menu thực đơn cho người dùng chọn thì có thể sử dụng hộp kiểm checkbox, khách ưng món nào thì chọn vào món đó, và cuối cùng click vào một Button "Đặt Món" thì mã VBA bắt đầu thực thi.
Bài viết này được đăng tại [free tuts .net]
1. Để mở Form Control thì bạn hãy click vào tab Developer, chọn Insert thì sẽ thấy Excel đã show ra hai group khác nhau, bạn hãy chú ý nhóm phía trên có dòng chữ Form Controls nhé.
2. Tiếp theo bạn hãy click vào một vị trí nào đó trong trang tính Excel (Worksheet) thì sẽ xuất hiện đối tượng mong muốn.
2. Thêm sự kiện vào Form Control
* Lưu ý: Bạn phải đọc bài ActiveX Controls trước khi xem bài này nhé, bởi có nhiều sự so sánh giống và khác nhau mà mình đề cập tới có liên quan đến bài đó.
Để thêm sự kiện vào Form Control thì hơi rườm rà một chút, ta phải gắn nó thông qua hộp thoại Macro.
Mình sẽ lấy một ví dụ là thêm sự kiện cho một Button nhé.
Bước 1: Tạo đối tượng và chọn macro
1. Tại Tab Developer chọn Insert -> Button (Form Controls)
2. Click chuột vào vị trí bạn muốn thêm button trong trang tính Excel.
3. Xuất hiện một hộp thoại Macro gồm những điểm lưu ý như sau.
Macro name: Là tên của macro mà bạn muốn gắn vào sự kiện click của button. Vì mỗi loại control sẽ có một sự kiện khác nhau nên bạn hãy đọc tên mặc định mà Excel đưa ra để đoán nhé. Như trong hình là Button1_Click
=> đây là sự kiện click, còn Button1 là tên của button này.
- Bạn có thể đổi sang một tên khác nếu muốn.
- Như trong hình là bạn chưa tạo một macro nào, vì vậy hãy click vào New để tạo. Lúc này một Module mới sẽ được tạo ở Visual Basic Editor và nó cũng tạo sẵn luôn một Sub (macro) có tên trùng với tên mà bạn đã đặt.
- Trường hợp bạn đã tạo sẵn macro rồi thì sẽ xuất hiện trong khung trắng phía dưới Macro name, bạn hãy chọn ở đó nhé.
Macro in: Là mức độ ảnh hưởng của macro, bạn có thể chọn trên workbook hiện tại hoặc trên mọi workbook đang mở.
Bước 2: Viết code xử lý sự kiện
Sau khi click vào New trong hộp thoại macro thì Excel sẽ đưa bạn tới một Module code có giao diện như sau:
Bạn hãy nhập đoạn code xuất hiện hộp thoại bằng lệnh MsgBox nhé.
Sub Button1_Click() MsgBox "Welcome to freetuts.net" End Sub
Hãy lưu lại rồi ra ngoài Excel và click vào button đó thì bạn sẽ thấy xuất hiện hộp thoại như sau.
Vậy là bạn đã code cho sự kiện thành công.
3. Cách thay đổi sụ kiện cho Form Control
Sau khi tạo xong và bạn muốn thay đổi macro cho form control (lấy ví dụ là button trên luôn nhé) thì thực hiện các bước như sau.
1. Click chuột phải vào đối tượng, sau đó chọn Assign Macro.
2. Lúc này sẽ xuất hiện hộp thoại Macro, bạn cứ làm như ở phần 2 là được nhé.
4. Cách di chuyển đối tượng Form Control
Khác với ActiveX Contro, để di chuyển đối tượng thì bạn hãy click chuột phải đối tương, sau đó dùng chuột trái đặt lên mấy cạnh của đối tượng thì sẽ xuất hiện biểu tượng move, lúc này hãy click chuột và di chuyển nhé.
5. Sự khác nhau giữa Form Control và ActiveX Control
Mình sẽ so sánh ở mức đơn giản nhất thôi nhé.
Form Control
- Form Controls tương thích với các phiên bản Excel trước, bắt đầu từ phiên bản Excel 5.0, được thiết kế để sử dụng trên các trang tính của Excel.
- Sự kiện trên Form Control tương đối đơn giản, mỗi control chỉ có một sự kiện duy nhất nên không được linh động.
- Điều đặc biệt là Form Control không thể thêm vào UserForm, điều mà ActiveX Control có thể.
ActiveX Control
- ActiveX Control cũng được sử dụng trên các trang tính của Excel.
- Mỗi đối tượng đều có rất nhiều sự kiện, được xem như là một Object của VBA nên có xuất hiện trong Visual Basic Editor.
- Nó có nhiều thuộc tính, điều này được thiết kế giống như những ngôn ngữ lập trình cấp cao.
- Các control có thể được thêm vào UserForm.
Đó là một vài điểm so sánh cơ bản về hai đối tượng này. Cá nhân mình thì vẫn thích sử dụng ActiveX Control hơn bởi nó rất linh động. Nhưng nếu bạn là người không rành nhiều về lập trình thì có thể sử dụng Form Control, bởi tính năng Macro Recorder sẽ giúp bạn tự tạo ra những macro thay vì tự code.
Xem thêm thông tin về sự khác nhau giữa Form Control và ActiveX Control tại đây.
Trên là những chia sẻ về cách sử dụng Form Control trong VBA, cũng như so sánh giống và khác nhau với một đối tượng Control anh em của nó đó là ActiveX Control. Hy vọng bài viết giúp ích cho bạn.