Bắt đầu với Excel VBA UserForms
Trong bài viết này, sẽ tìm hiểu những điều cơ bản về biểu mẫu người dùng VBA. Tôi sẽ giải thích cách tạo biểu mẫu trong excel, cách sử dụng hộp công cụ VBA, cách xử lý đầu vào của người dùng và cuối cùng là cách lưu trữ đầu vào của người dùng. Chúng ta sẽ xem xét chủ đề này bằng cách sử dụng một ví dụ và hướng dẫn từng bước. Nếu bạn đang đọc nó, tôi cho rằng bạn biết những điều cơ bản về Excel VBA.
Đừng chậm trễ nữa, hãy bắt đầu.
Tạo biểu mẫu đầu tư trong Excel và hồ sơ lưu trữ
Chúng tôi sẽ bắt đầu bằng cách thiết kế biểu mẫu người dùng. Trong biểu mẫu người dùng này, chúng ta sẽ có một hộp văn bản cho tên, một cho tuổi, một cho số tiền đầu tư và một cặp nút radio cho giới tính. Hãy bắt đầu nó.
Thiết kế biểu mẫu người dùng
Mở trình chỉnh sửa cơ bản trực quan trong excel bằng phím tắt ALT + F11. Trong Project Box, nhấp chuột phải vào VBAProject (yourfile). Trong tùy chọn chèn, chọn UserForm. Ngay lập tức, một thư mục mới sẽ được tạo và biểu mẫu người dùng của bạn sẽ được tìm thấy. Tất cả các biểu mẫu người dùng cho dự án này sẽ được thêm vào thư mục này.
Thay đổi tên của biểu mẫu thành InvestmentForm trong hộp thuộc tính *.
Thêm phần tử vào biểu mẫu: Trong hình trên, tôi đã thêm các phần tử (nhãn, hộp văn bản, nút lệnh). Tuy nhiên, một biểu mẫu người dùng mới hoàn toàn trống, bạn cần sử dụng hộp công cụ để thêm các phần tử vào biểu mẫu của mình. Nếu bạn không thể nhìn thấy hộp công cụ, hãy lấy nó từ tab xem *.
Phần tử Tên *: Hộp văn bản, nhãn, nút, v.v. tất cả đều là phần tử.
Và để sử dụng chúng trong mã VBA, chúng ta cần đặt tên cho chúng. Chúng tôi sử dụng cửa sổ tài sản để thay đổi tên của họ. Chọn phần tử. Ở đây tôi chọn hộp văn bản cho tên. Chuyển đến cửa sổ thuộc tính và thay đổi tên thành “NameBox *”. Làm tương tự cho từng phần tử bạn sẽ sử dụng. (bạn không cần đặt tên nhãn, trừ khi bạn muốn chúng là nhãn có thể nhấp được.)
Tôi đã đổi tên phần tử như bảng dưới đây và tôi sẽ sử dụng những tên này để chỉ chúng. Bạn có thể có nhiều tên khác nhau. Chỉ cần thay thế những tên này bằng tên của bạn. Đây là các tên VBA (tên mã) sẽ được sử dụng trong mã. Chúng sẽ không được phản ánh trên biểu mẫu.
Văn bản bạn có thể thấy trên nhãn và nút là “Chú thích”. Tên và chú thích của phần tử có thể giống nhau, nếu bạn muốn.
Element |
Rename |
Name Text Box |
NameBox |
Age Text Box |
AgeBox |
Male Option Button |
MaleOption |
Female Option Button |
FemaleOption |
Investment Text Box |
InvestBox |
Submit Command Button |
SubmitButton |
Cancel Command Button |
CancelButton |
Hiển thị biểu mẫu người dùng cho người dùng: Bây giờ biểu mẫu đã sẵn sàng, hãy hiển thị biểu mẫu cho người dùng. Nhưng chờ đã, làm thế nào để tôi làm điều đó. Không có tùy chọn trên trang tính để gọi biểu mẫu người dùng. Trên thực tế, biểu mẫu người dùng cần kích hoạt. Nó không thể được hiển thị bởi chính nó. Bạn có thể sử dụng nút lệnh, chương trình con hoặc sự kiện để làm cho biểu mẫu bật lên trên màn hình.
Ở đây tôi sẽ sử dụng một nút lệnh để kích hoạt biểu mẫu người dùng.
-
Trên trang tính, chuyển đến tab nhà phát triển? Chèn? Nút (điều khiển biểu mẫu).
Đổi tên biểu mẫu mở.
-
Nhấp chuột phải vào nó. Nhấp vào gán macro và sau đó nhấp vào mới.
Một phụ sẽ được tạo ngay lập tức. Bây giờ thêm dòng này vào phụ đó.
Sub Open_Form() 'Opening form InvestmentForm.Show End Sub
Nó được thực hiện. Quay lại trang tính đó và nhấp vào nút. Biểu mẫu người dùng sẽ bật lên.
Điền vào trang tính bằng cách sử dụng biểu mẫu người dùng VBA: Khi chúng tôi nhấp vào nút lệnh (biểu mẫu mở), biểu mẫu sẽ bật lên. Bây giờ bạn có thể điền vào biểu mẫu. Nhưng khi chúng ta nhấp vào nút gửi, dữ liệu đáng lẽ phải được nhập vào trang tính này, nhưng không có gì xảy ra. Bởi vì chúng tôi đã không viết bất kỳ hướng dẫn vba cho điều đó. Chúng ta cần lưu trữ dữ liệu biểu mẫu người dùng vào trang tính. Quay lại VBA và nhấp đúp vào nút Gửi. Một phụ mới sẽ được tạo tự động. Phụ này được nhúng trong biểu mẫu và bạn không thể tìm thấy nó trong bất kỳ mô-đun nào. Điều này tương tự đối với mỗi phần tử của biểu mẫu.
-
Viết mã vba này trong sub đó.
Private Sub SubmitButton_Click() Sheet1.Activate 'get first empty row on sheet (read about it here) lstrow = Cells(Rows.Count, 1).End(xlUp).Row Set firstEmptyRow = Range("A" & lstrow + 1) 'initialize each cell with data firstEmptyRow.Offset(0, 0).Value = nameBox.Value 'first cell firstEmptyRow.Offset(0, 1).Value = AgeBox.Value 'first cell to the right firstEmptyRow.Offset(0, 3).Value = InvestBox.Value 'third cell to the right 'checking radio button If MaleOption.Value = True Then firstEmptyRow.Offset(0, 2).Value = "Male" 'second cell to the right Else firstEmptyRow.Offset(0, 2).Value = "Female" 'second cell to the right End If 'Closing form Unload Me End Sub
Đoạn mã VBA ở trên chạy khi nhấp vào nút gửi. Nó tìm hàng trống đầu tiên trên trang tính và điền vào nó với các giá trị được cung cấp trong biểu mẫu. Và cuối cùng, nó đóng biểu mẫu bằng cách sử dụng lệnh “Unload Me”.
Sử dụng lệnh Hủy để đóng biểu mẫu. Hiện tại, nút hủy là vô dụng. Nó không làm gì cả. Trong trường hợp nếu bạn muốn hủy bỏ đầu vào, bạn có thể sử dụng nút hủy. Trong trường hợp đó: * Nhấp đúp vào nút lệnh hủy trong trình soạn thảo VBA. Một phụ mới sẽ được tạo. Chỉ cần viết dòng mã này để đóng biểu mẫu người dùng.
Private Sub CancelButton_Click() 'Closing form Unload Me End Sub
Cuối cùng mã biểu mẫu sẽ như thế này.
Và đó là nó. Đây là cách bạn sử dụng userform excel vba để lấy thông tin đầu vào từ người dùng. Trong bài viết này, chúng tôi chỉ tìm hiểu cách sử dụng cơ bản của userform để các bạn làm quen với nó. Nó là đơn giản, nếu bạn có kiến thức về vba cơ bản.
Trong các bài viết tới, chúng ta sẽ khám phá các chức năng nâng cao hơn của biểu mẫu người dùng vba trong Excel. Chúng tôi sẽ tạo userform trong excel để làm được nhiều việc hơn.
Chúng tôi sẽ khám phá các công cụ và yếu tố khác nhau có sẵn cho biểu mẫu người dùng vba.
Cho đến khi thực hành điều này. Bạn có thể tải file này về để tham khảo nếu muốn.
Vâng các bạn, đây là một hướng dẫn về biểu mẫu người dùng nhỏ và đơn giản. Tôi hy vọng nó đã được tháo vát. Hãy cho tôi biết nếu bạn có bất kỳ nghi ngờ nào về điều này, hãy cho tôi biết trong phần bình luận bên dưới.