Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA tạo một Biểu mẫu người dùng tương tác. Userform mà chúng ta sẽ tạo ra như sau:

Excel VBA Interactive Userform

Giải thích: bất cứ khi nào bạn nhập một giá trị vào hộp văn bản ID, Excel VBA sẽ tải bản ghi tương ứng. Khi bạn nhấp vào nút Chỉnh sửa / Thêm, Excel VBA sẽ chỉnh sửa bản ghi trên trang tính hoặc thêm bản ghi khi ID chưa tồn tại. Nút Xóa sẽ xóa tất cả các hộp văn bản. Nút Close đóng Biểu mẫu người dùng.

Để tạo Biểu mẫu người dùng này, hãy thực hiện các bước sau.

  1. Mở Trình soạn thảo Visual Basic. Nếu Project Explorer không hiển thị, hãy bấm View, Project Explorer.

  2. Nhấp vào Chèn, Biểu mẫu người dùng. Nếu Hộp công cụ không tự động xuất hiện, hãy bấm Xem, Hộp công cụ. Màn hình của bạn sẽ được thiết lập như bên dưới.

Userform Screen Setup in Excel VBA

  1. Thêm nhãn, hộp văn bản (đầu tiên ở trên cùng, thứ hai ở dưới đầu tiên, v.v.) và các nút lệnh. Khi điều này đã được hoàn thành, kết quả sẽ phù hợp với hình ảnh của Biểu mẫu người dùng được hiển thị trước đó. Ví dụ: tạo điều khiển hộp văn bản bằng cách nhấp vào TextBox từ Hộp công cụ. Tiếp theo, bạn có thể kéo một hộp văn bản trên Biểu mẫu người dùng.

  2. Bạn có thể thay đổi tên và chú thích của các điều khiển. Tên được sử dụng trong mã VBA Excel. Phụ đề là những thứ xuất hiện trên màn hình của bạn. Bạn nên thay đổi tên của các điều khiển, nhưng không cần thiết ở đây vì chúng ta chỉ có một số điều khiển trong ví dụ này. Để thay đổi chú thích của các nhãn, hộp văn bản và các nút lệnh, hãy bấm Xem, Cửa sổ Thuộc tính và bấm vào từng điều khiển.

  3. Để hiển thị Biểu mẫu người dùng, hãy đặt một nút lệnh trên trang tính của bạn và thêm dòng mã sau:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Bây giờ chúng ta sẽ tạo Sub UserForm_Initialize. Khi bạn sử dụng phương thức Hiển thị cho Biểu mẫu người dùng, phụ này sẽ tự động được thực thi.

  1. Mở Trình soạn thảo Visual Basic.

  2. Trong Project Explorer, nhấp chuột phải vào UserForm1 và sau đó nhấp vào View Code.

  3. Chọn Userform từ danh sách thả xuống bên trái. Chọn Khởi tạo từ danh sách thả xuống bên phải.

  4. Thêm dòng mã sau:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Giải thích: dòng mã này đặt tiêu điểm vào hộp văn bản đầu tiên vì đây là nơi chúng ta muốn bắt đầu khi Biểu mẫu người dùng được tải.

Bây giờ chúng tôi đã tạo phần đầu tiên của Biểu mẫu người dùng. Mặc dù trông nó đã gọn gàng rồi, nhưng sẽ không có gì xảy ra khi chúng ta nhập một giá trị vào hộp văn bản ID hoặc khi chúng ta nhấp vào một trong các nút lệnh.

  1. Trong Project Explorer, nhấp chuột phải vào UserForm1 và sau đó nhấp vào View Code.

  2. Chọn TextBox1 từ danh sách thả xuống bên trái. Chọn Thay đổi từ danh sách thả xuống bên phải.

  3. Thêm dòng mã sau:

Private Sub TextBox1_Change()

GetData

End Sub
  1. Trong Project Explorer, nhấp đúp vào UserForm1.

  2. Nhấp đúp vào nút lệnh Chỉnh sửa / Thêm.

  3. Thêm dòng mã sau:

Private Sub CommandButton1_Click()

EditAdd

End Sub
  1. Nhấp đúp vào nút lệnh Clear.

  2. Thêm dòng mã sau:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Giải thích: những người đăng ký này gọi những người đăng ký khác mà chúng tôi sẽ tạo sau một giây.

  1. Nhấp đúp vào nút lệnh Đóng.

  2. Thêm dòng mã sau:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Giải thích: dòng mã này đóng Biểu mẫu người dùng.

Đã đến lúc tạo đăng ký. Bạn có thể xem qua chương Chức năng và phụ của chúng tôi để tìm hiểu thêm về đăng ký. Nếu bạn đang vội, chỉ cần đặt các đăng ký sau vào một mô-đun (Trong Visual Basic Editor, nhấp vào Chèn, Mô-đun).

  1. Đầu tiên, khai báo ba biến kiểu Integer và một biến kiểu Boolean. Khai báo các biến trong phần Khai báo chung (ở trên cùng của mô-đun). Bằng cách này, bạn chỉ phải khai báo các biến một lần và bạn có thể sử dụng chúng trong nhiều con.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean
  1. Thêm con GetData.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then

flag = False

i = 0

id = UserForm1.TextBox1.Value

Do While Cells(i + 1, 1).Value <> ""

If Cells(i + 1, 1).Value = id Then

flag = True

For j = 2 To 3

UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value

Next j

End If

i = i + 1

Loop

If flag = False Then

For j = 2 To 3

UserForm1.Controls("TextBox" & j).Value = ""

Next j

End If

Else

ClearForm

End If

End Sub
  1. Thêm phụ ClearForm.

Sub ClearForm()

For j = 1 To 3

UserForm1.Controls("TextBox" & j).Value = ""

Next j

End Sub

Giải thích: Excel VBA xóa tất cả các hộp văn bản.

  1. Thêm phụ EditAdd.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then

flag = False

i = 0

id = UserForm1.TextBox1.Value

emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

Do While Cells(i + 1, 1).Value <> ""

If Cells(i + 1, 1).Value = id Then

flag = True

For j = 2 To 3

Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value

Next j

End If

i = i + 1

Loop

If flag = False Then

For j = 1 To 3

Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value

Next j

End If

End If

End Sub

Giải thích: Nếu hộp văn bản ID không trống, Excel VBA sẽ chỉnh sửa bản ghi trên trang tính (ngược lại với việc tải bản ghi như chúng ta đã thấy trước đó).

Nếu Excel VBA không thể tìm thấy ID (cờ vẫn là Sai), nó sẽ thêm bản ghi vào hàng trống tiếp theo. Biến voidRow là hàng trống đầu tiên và tăng lên mỗi khi thêm bản ghi.

  1. Thoát khỏi Visual Basic Editor, nhập các nhãn được hiển thị bên dưới vào hàng 1 và kiểm tra Userform.

Excel VBA Interactive Userform