HƯỚNG DẪN VBA USERFORM CONTROLS - Blog Học Excel Online
Có thể bạn quan tâm
Trong bài đăng này, chúng ta sẽ xem xét các control VBA riêng lẻ và cách sử dụng chúng. Học Excel Online sẽ đề cập đến các control VBA thường được sử dụng nhất. Đó là Checkbox, ComboBox, CommandButton, Label, ListBox và TextBox
Giới thiệu
Trong bài đăng đầu tiên về UserForm, chúng ta đã xem xét cách sử dụng của UserForm. Còn đối với mỗi control VBA trong bài này, tôi sẽ trình bày các cách sử dụng phổ biến nhất của chúng và cung cấp nhiều ví dụ mà bạn có thể sử dụng trong các dự án của riêng mình. Các control VBA đó là:
- Label: là các nhãn, bạn có thể ghi ký tự lên đó để hiển thị ra ngoài.
- TextBox: Là ô nhập dữ liệu. Thường được dùng để nhập đường link của một file hay folder. Hoặc để người dùng nhập thông tin tên, tuổi,… vào đó.
- CommandButton: Là nút bấm để người dùng click vào.
- CheckBox: control VBA cho phép người dùng tích chọn, có hai trạng thái On/Off hoặc True/False.
- Option button (radio button) : Có từ 2 hạng mục trở lên và bạn muốn người dùng hãy tích chọn 1 lựa chọn trong số đó, khi đó sẽ dùng control VBA Radio Button.
- ListBox: Hiển thị một danh sách, có thể thiết định nhiều cột và hiển thị nhiều dòng dữ liệu. Người dùng có thể chọn một hay nhiều dòng dữ liệu trong đó với control VBA này
- ComboBox: Hiển thị một danh sách để người dùng lựa chọn. Người dùng có thể nhập giá trị tùy ý vào để tìm kiếm trong danh sách của nó.
UserForm Controls VBA
Chúng ta thêm các control VBA vào UserForms để cho phép người dùng thực hiện lựa chọn, nhập văn bản hoặc nhấp vào nút. Để thêm điều khiển vào UserForm, chúng tôi thực hiện như sau
- Đi tới hộp thoại Toolbox – nếu không hiển thị, hãy chọn View->Toolbox.
- Nhấp vào biểu tượng control bạn muốn thêm – biểu tượng sẽ xuất hiện được chọn (được nhấn vào) cho đến khi bạn nhấp vào biểu tượng khác.
- Đặt con trỏ qua UserForm.
- Giữ nút chuột trái và kéo cho đến khi điều khiển có kích thước bạn muốn.
- Để chọn hoặc di chuyển control VBA , hãy nhấp vào biểu tượng Select Objects (biểu tượng ở bên trái) trên hộp công cụ và thao tác này sẽ đưa bạn vào chế độ chọn.
Bảng sau đây hiển thị danh sách các điều khiển phổ biến
Control | Mô tả |
Checkbox | Bật / tắt mục |
ComboBox | Cho phép lựa chọn từ danh sách các mục |
CommandButton | Nhấp để thực hiện hành động |
Label | Hiển thị văn bản |
ListBox | Cho phép lựa chọn từ danh sách các mục |
TextBox | Cho phép nhập văn bản |
Thuộc tính của control VBA
Hình bên dưới cho thấy ba Windows quan trọng khi thêm control VBA 0vào UserForm. Đó là:
- Cửa sổ Properties.
- Hộp thoại Toolbox.
- Cửa sổ thiết kế UserForm.
Nếu bạn nhấp vào bất kỳ control VBA nào hoặc chính UserForm, bạn sẽ thấy các thuộc tính của mục đã chọn được hiển thị trong cửa sổ Properties . Bạn có thể thay đổi tên, chú thích, v.v. trong Window này.
Để thay đổi tên của UserForm, hãy làm như sau:
- Nhấp vào UserForm trong cửa sổ Project hoặc nhấp vào chính UserForm.
- Bấm vào trường (Name) của cửa sổ Properties.
- Nhập tên mới vào trường này.
Thêm mã
Bạn có thể xem mã của UserForm theo các cách sau:
- Nhấp đúp vào UserForm.
- Nhấp chuột phải vào chính 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 chức năng điều khiển chung
Bảng sau đây cho thấy các chức năng được sử dụng phổ biến nhất có sẵn cho tất cả các điều khiển.
Chức năng | Hoạt động | Ví dụ |
Enabled | Enable/Disable control | combobox.Enabled = True textbox.Enabled = False |
SetFocus | Đặt tiêu điểm cho control (không thể sử dụng với Label) | combobox.SetFocus |
Visible | Show/Hide control | combobox.Visible = True textbox.Visible = False |
CheckBox
Bảng Cheat Cheat CheckBox
Chức năng | Hoạt động | Ví dụ |
Caption | Nhận / Đặt văn bản | checkbox.Caption = “Apple” |
Value | Nhận trạng thái đã kiểm tra | If checkbox.Value = True Then |
Value | Đặt trạng thái đã kiểm tra | checkbox.Value = False |
CheckBox là một control VBA đơn giản cho phép người dùng bật hoặc tắt nội dung nào đó. Bạn sẽ thường thấy chúng được sử dụng trên các trang web nơi bạn được yêu cầu chấp nhận các điều khoản và điều kiện.
Bật hoặc tắt CheckBox
Chúng ta có thể bật hoặc tắt CheckBox bằng cách đặt nó thành true hoặc false.
' Set the check on CheckBoxTerms.Value = True ' Set the check off CheckBoxTerms.Value = FalseVí dụ Checkbox Event
Nếu chúng ta muốn tạo một hành động khi người dùng nhấp vào checkbox thì chúng ta tạo một checkbox event. Đây chỉ đơn giản là một phụ chạy khi hộp kiểm được nhấp vào.
Để tạo sự kiện này, chỉ cần nhấp vào hộp kiểm trong chế độ thiết kế và bạn sẽ nhận được những điều sau:
Private Sub CheckBoxTerms_Click() End SubĐoạn mã sau đây cho thấy một ví dụ về cách chúng ta sử dụng:
Private Sub CheckBoxTerms_Click() If checkboxTerms.Value = True Then buttonOk.Enabled = True Else buttonOk.Enabled = False End If End SubLabel
Label Cheat Sheet
Chức năng | Hoạt động | Ví dụ |
Text | Nhận \ Đặt văn bản | textbox1.Text = “Apple” |
Label là control VBA đơn giản nhất. Nói chung, chúng ta không đề cập đến nó trong mã. Nó được sử dụng để gắn nhãn các control hoặc hiển thị một thông báo ngắn.
Đặt Label Text
Bạn có thể đặt văn bản của Label trong mã bằng cách sử dụng thuộc tính Caption:
LabelAddress.Caption = "Customer Address"TextBox
Bảng Cheat TextBox
Chức năng | Hoạt động | Ví dụ |
Text | Đặt văn bản | textbox1.Text = “Apple” |
Text | Đặt văn bản | sFruit = textbox1.Text |
Value | Đặt văn bản | textbox1.Value = “Apple” |
Value | Đặt văn bản | sFruit = textbox1.Value |
Cài đặt TextBox Text
TextBox được sử dụng để cho phép người dùng nhập văn bản. Chúng ta có thể đọc hoặc viết từ một hộp văn bản như sau:
TextBoxNotes.Value = "It was the best of times." sNotes = TextBoxNotes.Valuetextbox có các thuộc tính Text và Value. Đây là những điều tương tự.
From MSDN: Đối với TextBox, bất kỳ giá trị nào bạn gán cho thuộc tính Text cũng được gán cho thuộc tính Value.
Vấn đề với textbox là người dùng có thể nhập bất cứ thứ gì. Nếu người dùng đang nhập văn bản cơ bản thì điều này là tốt. Nếu văn bản được sử dụng để tính toán hoặc tìm kiếm thứ gì đó thì chúng ta cần xác nhận nó.
Ví dụ: nếu người dùng định chọn một năm từ 2010 đến 2019, chúng ta nên sử dụng ComboBox / Listbox chỉ chứa các năm hợp lệ. Sau đó, chúng ta không cần xác thực định dạng và phạm vi mục nhập của người dùng.
Tạo TextBox dạng số
Đoạn mã sau ngăn người dùng nhập bất kỳ thứ gì khác ngoài số vào hộp văn bản:
Private Sub textboxComments_KeyPress( _ ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Is < vbKey0, Is > vbKey9 KeyAscii = 0 Beep End Select End SubSử dụng Date Control
Nếu bạn là người dùng để chọn ngày, bạn có thể sử dụng MonthView control. Nó là một trong những control VBA bổ sung đi kèm với Visual Basic. Nó hoạt động khá tốt và trông giống như công cụ chọn ngày tiêu chuẩn mà bạn thấy trong hầu hết các ứng dụng.
Để thêm MonthView control:
- Đi tới trình chỉnh sửa Visual Basic và đảm bảo Toolbox hiển thị (View ->Toolbox nếu nó không hiển thị).
- Chọn Tools và sau đó chọn Additional Controls từ menu.
- Kiểm tra Microsoft MonthView Control, Phiên bản 6.0.
- Điều khiển MonthView bây giờ sẽ xuất hiện trên Toolbox.
Để có được lựa chọn người dùng từ điều khiển MonthView, bạn có thể sử dụng DateClick event như đoạn mã sau hiển thị.
Private Sub MonthView1_DateClick( _ ByVal DateClicked As Date) ' Store date in textbox TextBox1.Value = MonthView1.Value End SubĐể biết thêm thông tin chọn ngày trong excel sau:
ADD-IN CHỌN NGÀY TRONG EXCEL
ỨNG DỤNG CHỌN NGÀY DÙNG TRONG EXCEL VÀ VBA
ComboBox
Bảng Cheat ComboBox
Chức năng | Hoạt động | Ví dụ |
AddItem | Thêm một mục | listbox.AddItem “Spain” |
Clear | Xóa tất cả mục | combo.Clear |
List | Thêm một loạt mục | combo.List = Range(“A1”).Value |
ListCount | Nhận số lượng mục | cnt = combo.ListCount |
ListIndex | Nhận / đặt mục đã chọn | Idx = combo.ListIndex combo.ListIndex = 0 |
ListRows | Nhận / đặt số lượng mục đượ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ị các mục đã chọn | Dim sCountry As String sCountry = combo.Value |
Control VBA ComboBox được sử dụng để cho phép người dùng chọn một mục từ danh sách. Nó rất giống với control VBA listbox. Sự khác biệt chính là hộp danh sách cho phép nhiều lựa chọn.
Trong hầu hết các trường hợp, chúng ta muốn thực hiện bốn điều với ComboBox \ ListBox:
- Điền vào nó với dữ liệu khi Biểu mẫu được tải.
- Chọn trước một mục.
- Lấy (các) mục hiện được chọn.
- Hoàn thiện một hành động khi người dùng chọn một mục khác.
Lấp đầy dữ liệu vào Combobox
Chúng ta có thể điền vào combobox một mục tại một thời điểm bằng cách sử dụng thuộc tính AddItem.
Bạn thường sử dụng AddItem trong một vòng lặp nơi bạn đang kiểm tra từng mục trước khi thêm nó.
Điền vào ComboBox từ một dải ô
Nếu bạn muốn điền vào ComboBox từ toàn bộ vùng dữ liệu, bạn có thể thực hiện điều đó trong một dòng mã.
Thông thường, khi bạn điền vào một ComboBox, bạn muốn xóa nội dung hiện có trước tiên.
Điền vào control VBA ComboBox – Không có bản sao
Nếu vùng dữ liệu của chúng ta có nhiều mục nhập thì chúng ta muốn tránh thêm cùng một mục nhiều lần. Chúng ta có thể làm điều này bằng cách sử dụng Từ điển.
VBA ComboBox – Ví dụ 1
Cách dễ nhất để chỉ ra cách thức hoạt động này bằng một ví dụ. Hãy tưởng tượng chúng ta có một danh sách các quốc gia và thủ đô của họ trong các ô A1: B196.
Chúng ta muốn người dùng chọn bất kỳ quốc gia nào. Khi họ thực hiện UserForm của chúng ta sẽ hiển thị thủ đô của quốc gia đó. Hình dưới đây cho thấy và ví dụ về điều này.
Điều đầu tiên chúng ta muốn làm là điền vào ComboBox các quốc gia khi tải biểu mẫu. Chúng ta thực hiện việc này bằng cách sử dụng UserForm_Initialize event mà chúng ât đã xem xét trong bài đăng đầu tiên trên VBA UserForms.
Chúng ta có thể sử dụng mã sau để điền vào ComboBox từ một dải ô và đặt mục đã chọn là mục đầu tiên. (Lưu ý rằng chúng ta không cần xóa ComboBox ở đây vì Initialize event chỉ được sử dụng một lần – khi UserForm được tạo).
Khi người dùng chọn một quốc gia, chúng ta muốn hiển thị thủ đô trong textbox. Chúng ta sử dụng Change Event của control VBA ComboBox. Để tạo cái này, chúng ta chỉ cần nhấp đúp vào ComboBox và nó sẽ được tạo tự động.
Khi người dùng nhấp vào Ok, chúng ta ghi các giá trị đã chọn vào bảng Results.
VBA ComboBox – Ví dụ 2
Một nhiệm vụ rất phổ biến cần thực hiện là cập nhật ComboBox thứ hai dựa trên lựa chọn của cái đầu tiên.
Hãy tưởng tượng chúng ta có hai ComboBox – một chứa tên của một quốc gia và một có danh sách ba thành phố từ quốc gia đó.
Khi người dùng chọn một quốc gia, chúng ta cập nhật ComboBox thành phố với các thành phố từ quốc gia đó.
Dữ liệu của chúng ta được lưu trữ như sau:
Bất cứ khi nào giá trị Country ComboBox được đặt thành một quốc gia, chúng tôi cập nhật City ComboBox để chứa ba thành phố từ quốc gia đó. Điều này xảy ra ở hai nơ:
- Khi chúng ta tải hộp tổ hợp quốc gia – Initialize Event
- Khi người dùng chọn một quốc gia – Change Event
Mã cho những điều này như sau:
Trong cả hai trường hợp, chúng ta gọi FillCityCombo Sub để điền vào ComboBox thành phố. Nó nhận một tham số là vị trí của lựa chọn quốc gia hiện tại.
Chúng ta sử dụng giá trị vị trí để đếm từ hàng trên cùng của vùng dữ liệu trang tính.
ListBox
ListBox là một control VBA được sử dụng gần giống như ComboBox. Mã trong phần ComboBox ở trên cũng sẽ hoạt động cho control VBA ListBox.
Bảng ListBox Cheat
Chức năng | Hoạt động | Ví dụ |
AddItem | Thêm 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ị hàng cột | ComboBox1.ColumnHeads = True |
List | Vùng dữ liệu đến Listbox ListBox đến vùng dữ liệu | Listbox.List = Range(“A1:A4”).Value Range(“A1:A4”).Value = Listbox.List |
ListCount | Nhận số lượng mục | cnt = listbox.ListCount |
ListIndex | Nhận / đặt mục đã chọn | Idx = listbox.ListIndex combo.ListIndex = 0 |
RemoveItem | Xóa một mục | listbox.Remove 1 |
RowSource | Thêm vùng dữ liệu củagiá trị từ một trang tính | ComboBox1.RowSource = Sheet1.Range(“A2:B3”).Address |
Value | Nhận giá trị của mục đã chọn | Dim sCountry As String sCountry = listbox.Value |
Chúng ta có thể sử dụng control VBA ListBox giống như cách chúng ta sử dụng control VBA ComboBox. Sự khác biệt là cách chúng được hiển thị.
- ListBox là control VBA hiển thị danh sách các mục có sẵn để chọn.
- ComboBox là control VBA chỉ hiển thị mục đã chọn. Bạn phải nhấp vào ComboBox để xem các mục có sẵn khác.
Sự khác biệt chính khác giữa chúng là ListBox cho phép nhiều lựa chọn còn ComboBox thì không.
Chúng ta có thể lấy tất cả các mục đã chọn trong ListBox bằng cách đọc qua tất cả các mục và kiểm tra xem từng mục đã được chọn chưa. Trong đoạn mã dưới đây, chúng ta thêm tất cả các mục đã chọn vào một Bộ sưu tập.
Bài viết về control VBA đã kết thúc series 2 bài đăng về cách sử sụng useforms, Học Excel Online mong muốn rằng các bạn đã có thể nắm được các kiến thức về vận hành và ứng dụng cho công việc. Xin chào và hẹn gặp lại trong các bài viết bổ ích sắp tới về VBA Excel nhé!
Từ khóa » Gán Giá Trị Cho Textbox Trong Vba
-
Gán Giá Trị Cho Textbox - Forums
-
Cách Dùng Textbox Trong VBA (ActiveX Control) - Freetuts
-
Làm Thế Nào để Có Thể Gán Biến Cho Form Và Cho Textbox Trong Form
-
Hướng Dẫn Phần Này Textbox Có Thể Tự động Lấy Giá Trị Tương ứng
-
Tạo Phạm Vi Nhập Liệu Cho Textbox Trong VBA EXCEL 2021
-
Làm Sao Gán Giá Trị Của Text Box Cho Text Box - Dân Kế Toán
-
Gán Giá Trị Vào Textbox Như Thế Nào? - HelpEx
-
Làm Sao Gán Giá Trị Của Text Box Cho Text Box? - HelpEx
-
Cách Tự động định Dạng Số Khi Nhập Vào Textbox Trong Userform ...
-
Hướng Dẫn Tạo Textbox Với Nội Dung Của 1 ô Trong Excel - YouTube
-
Gán Giá Trị Cho Combobox Bằng Giá Trị Của Textbox - Thủ Thuật Access
-
[PDF] Mảng Động, Kiểu Date, Mảng Control, TextBox, ListBox, ComboBox
-
Userform (form Người Dùng) Trong VBA Excel - Tài Liệu Text - 123doc
-
Gán Giá Trị Cho Textbox Từ Listbox Của Userform Khác. | Tự Học VBA