Trong bài viết này, chúng ta sẽ cùng nhau khám phá các control VBA trong Excel và cách sử dụng chúng. Thủ Thuật sẽ tập trung vào những control VBA phổ biến nhất, bao gồm Checkbox, ComboBox, CommandButton, Label, ListBox và TextBox.
Khái Quát Về Control VBA
Trong bài viết trước về UserForm, chúng ta đã tìm hiểu cách sử dụng UserForm. Bây giờ, chúng ta sẽ đi sâu vào từng control VBA, phân tích cách sử dụng phổ biến và cung cấp các ví dụ thực tế để bạn áp dụng vào dự án của mình. Các control VBA bao gồm:
- Label: Hiển thị văn bản, thường dùng làm nhãn cho các control khác.
- TextBox: Cho phép người dùng nhập dữ liệu, ví dụ như đường dẫn file, tên, tuổi,…
- CommandButton: Nút bấm để người dùng thực hiện một hành động nào đó.
- CheckBox: Cho phép người dùng lựa chọn giữa hai trạng thái: On/Off hoặc True/False.
- Option button (radio button): Cho phép người dùng chọn một trong nhiều lựa chọn.
- ListBox: Hiển thị danh sách nhiều dòng, nhiều cột, cho phép người dùng chọn một hoặc nhiều dòng.
- ComboBox: Hiển thị danh sách cho phép người dùng lựa chọn, đồng thời cho phép người dùng nhập giá trị để tìm kiếm.
Thêm Control VBA vào UserForm
Để thêm control VBA vào UserForm, thực hiện các bước sau:
- Mở hộp thoại Toolbox (Nếu chưa hiển thị, chọn View > Toolbox).
- Chọn biểu tượng control cần thêm.
- Đặt con trỏ chuột lên UserForm.
- Kéo thả chuột để tạo control với kích thước mong muốn.
- Để chọn hoặc di chuyển control, sử dụng công cụ Select Objects (biểu tượng ở bên trái trong Toolbox).
Bảng dưới đây liệt kê một số control phổ biến:
Control | Mô tả |
---|---|
Checkbox | Chọn/Bỏ chọn một mục |
ComboBox | Chọn một mục từ danh sách |
CommandButton | Nút bấm thực hiện hành động |
Label | Hiển thị văn bản |
ListBox | Chọn một hoặc nhiều mục từ danh sách |
TextBox | Nhập văn bản |
Thuộc Tính Của Control VBA
1-VBA USERFORM CONTROLS
Ba cửa sổ quan trọng khi làm việc với control VBA trong UserForm:
- Cửa sổ Properties: Hiển thị thuộc tính của control hoặc UserForm được chọn.
- Hộp thoại Toolbox: Chứa các control VBA.
- Cửa sổ thiết kế UserForm: Nơi thiết kế giao diện UserForm.
Để thay đổi tên UserForm:
- Chọn UserForm trong cửa sổ Project hoặc nhấp vào UserForm.
- Nhấp vào trường (Name) trong cửa sổ Properties.
- Nhập tên mới.
Thêm Mã VBA
Xem mã VBA của UserForm bằng cách:
- Nhấp đúp vào UserForm.
- Nhấp chuột phải vào UserForm và chọn View Code.
- Nhấp chuột phải vào UserForm trong cửa sổ Project và chọn View Code.
Các Hàm Chung Của Control VBA
Bảng dưới đây liệt kê các hàm thường dùng cho tất cả các control:
Hàm | Chức năng | Ví dụ |
---|---|---|
Enabled | Kích hoạt/Vô hiệu hóa control | combobox.Enabled = True textbox.Enabled = False |
SetFocus | Đặt focus vào control | combobox.SetFocus |
Visible | Hiển thị/Ẩn control | combobox.Visible = True textbox.Visible = False |
Private Sub checkboxAddNotes_Click()
' Kích hoạt textbox khi checkbox được chọn
If checkboxAddNotes.Value = True Then
textboxNotes.Enabled = True
textboxNotes.SetFocus
Else
textboxNotes.Enabled = False
End If
End Sub
CheckBox
2-VBA USERFORM CONTROLS
Hàm | Chức năng | Ví dụ |
---|---|---|
Caption | Nhận/Đặt văn bản | checkbox.Caption = "Apple" |
Value | Nhận trạng thái | If checkbox.Value = True Then |
Value | Đặt trạng thái | checkbox.Value = False |
CheckBox cho phép người dùng bật hoặc tắt một tùy chọn.
Bật/Tắt CheckBox
' Chọn CheckBox
CheckBoxTerms.Value = True
' Bỏ chọn CheckBox
CheckBoxTerms.Value = False
Ví dụ Sự Kiện CheckBox
Private Sub CheckBoxTerms_Click()
If checkboxTerms.Value = True Then
buttonOk.Enabled = True
Else
buttonOk.Enabled = False
End If
End Sub
Label
Hàm | Chức năng | Ví dụ |
---|---|---|
Caption | Nhận/Đặt văn bản | LabelAddress.Caption = "Địa chỉ khách hàng" |
Label dùng để hiển thị văn bản, thường là nhãn cho các control khác.
TextBox
Hàm | Chức năng | Ví dụ |
---|---|---|
Text | Đặt văn bản | textbox1.Text = "Apple" |
Text | Nhận văn bản | sFruit = textbox1.Text |
Value | Đặt văn bản | textbox1.Value = "Apple" |
Value | Nhận văn bản | sFruit = textbox1.Value |
TextBox cho phép người dùng nhập văn bản.
Đặt/Nhận Giá Trị TextBox
TextBoxNotes.Value = "Ghi chú của bạn tại đây."
sNotes = TextBoxNotes.Value
Thuộc tính Text
và Value
của TextBox hoạt động tương tự nhau.
Tạo TextBox Chỉ Nhận Số
Private Sub textboxComments_KeyPress( _
ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Is vbKey9
KeyAscii = 0
Beep
End Select
End Sub
Sử Dụng MonthView Control để Chọn Ngày
MonthView Control là một công cụ hữu ích để chọn ngày. Để thêm MonthView Control:
- Trong VBE, mở Toolbox (View > Toolbox).
- Chọn Tools > Additional Controls.
- Chọn Microsoft MonthView Control, Version 6.0.
Để lấy ngày người dùng chọn từ MonthView Control, sử dụng sự kiện DateClick
:
Private Sub MonthView1_DateClick( _
ByVal DateClicked As Date)
' Lưu ngày vào textbox
TextBox1.Value = MonthView1.Value
End Sub
Tham khảo thêm:
- [Add-in Chọn Ngày Trong Excel](Không có link)
- [Ứng Dụng Chọn Ngày Trong Excel và VBA](Không có link)
ComboBox
Hàm | Chức năng | Ví dụ |
---|---|---|
AddItem | Thêm một mục | listbox.AddItem "Spain" |
Clear | Xóa tất cả các mục | combo.Clear |
List | Thêm một loạt mục/Nhận danh sách mục | combo.List = Range("A1").Value |
ListCount | Đếm số lượng mục | cnt = combo.ListCount |
ListIndex | Nhận/Đặt chỉ số mục được chọn | Idx = combo.ListIndex combo.ListIndex = 0 |
ListRows | Nhận/Đặt số lượng mục hiển thị | NoItems = combo.ListRows combo.ListRows = 12 |
RemoveItem | Xóa một mục | combo.RemoveItem 1 |
Value | Nhận giá trị mục được chọn | sCountry = combo.Value |
ComboBox cho phép người dùng chọn một mục từ danh sách.
Điền Dữ Liệu Vào ComboBox
Sử dụng AddItem
để thêm từng mục vào ComboBox.
Điền Dữ Liệu Từ Vùng Dữ Liệu
combo.Clear ' Xóa nội dung cũ
combo.List = Range("A1:A10").Value ' Điền dữ liệu từ vùng A1:A10
Điền Dữ Liệu Không Trùng Lặp
Sử dụng Dictionary để loại bỏ các mục trùng lặp khi điền dữ liệu vào ComboBox.
Ví Dụ ComboBox 1: Hiển Thị Thủ Đô Theo Quốc Gia

Private Sub UserForm_Initialize()
ComboBox1.List = Sheets("Sheet1").Range("A1:A196").Value
ComboBox1.ListIndex = 0
End Sub
Private Sub ComboBox1_Change()
Dim i As Long
i = ComboBox1.ListIndex
TextBox1.Value = Sheets("Sheet1").Range("B" & i + 1).Value
End Sub
Private Sub CommandButton1_Click()
' Ghi kết quả vào bảng Results (Cần định nghĩa bảng Results)
End Sub
Ví dụ ComboBox 2: Cập Nhật ComboBox Theo Lựa Chọn
Cấu trúc dữ liệu (ví dụ)
(Không có dữ liệu ví dụ)
Private Sub UserForm_Initialize()
' Điền dữ liệu vào combobox quốc gia
ComboBox1.List = Sheets("Sheet1").Range("A1:A3").Value
ComboBox1.ListIndex = 0
' Điền dữ liệu vào combobox thành phố dựa trên quốc gia được chọn
Call FillCityCombo(ComboBox1.ListIndex + 1)
End Sub
Private Sub ComboBox1_Change()
Call FillCityCombo(ComboBox1.ListIndex + 1)
End Sub
Private Sub FillCityCombo(rowNum As Long)
ComboBox2.Clear
ComboBox2.AddItem Sheets("Sheet1").Cells(rowNum, 2).Value
ComboBox2.AddItem Sheets("Sheet1").Cells(rowNum, 3).Value
ComboBox2.AddItem Sheets("Sheet1").Cells(rowNum, 4).Value
ComboBox2.ListIndex = 0
End Sub
ListBox
ListBox tương tự như ComboBox nhưng cho phép chọn nhiều mục.
Bảng ListBox Cheat Sheet
Hàm | Chức năng | Ví dụ |
---|---|---|
AddItem | Thêm một mục | listbox.AddItem "Spain" |
Clear | Xóa tất cả các mục | listbox.Clear |
ColumnCount | Đặt số lượng cột hiển thị | ComboBox1.ColumnCount = 2 |
ColumnHeads | Hiển thị tiêu đề cột | ComboBox1.ColumnHeads = True |
List | Gán dữ liệu từ vùng/Gán dữ liệu vào vùng | Listbox.List = Range("A1:A4").Value Range("A1:A4").Value = Listbox.List |
ListCount | Đếm số lượng mục | cnt = listbox.ListCount |
ListIndex | Nhận/Đặt chỉ số mục được chọn | Idx = listbox.ListIndex combo.ListIndex = 0 |
RemoveItem | Xóa một mục | listbox.Remove 1 |
RowSource | Liên kết dữ liệu với vùng trên trang tính | ComboBox1.RowSource = Sheet1.Range("A2:B3").Address |
Value | Nhận giá trị mục được chọn | sCountry = listbox.Value |
Lấy Nhiều Mục Được Chọn Trong ListBox
Dim collSelectedItems As New Collection
Dim i As Long
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
collSelectedItems.Add ListBox1.List(i)
End If
Next i
Kết Luận
Bài viết đã giới thiệu về các control VBA phổ biến trong Excel, bao gồm CheckBox, ComboBox, CommandButton, Label, ListBox và TextBox. Hi vọng bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng các control này trong việc xây dựng UserForm và ứng dụng VBA trong Excel. Hãy khám phá thêm các bài viết khác trên Thủ Thuật để nâng cao kỹ năng VBA Excel của bạn!
Discussion about this post