Cách sử dụng MessageBox và InputBox trong VBA Excel

Trong VBA Excel, mỗi khi bắt lỗi nhập sai dữ liệu, bạn cần hiển thị một thông báo hay một hướng dẫn quy tắc nhập dữ liệu vào trường thông tin đó để người dùng dễ dàng nắm bắt và tương tác. Và để hiển thị thông báo đó, bạn có thể sử dụng hộp thoại MessageBox có sẵn trong VBA. Ngoài ra, khi cần nhập thông tin vào một trường bạn có thể sử dụng hộp thoại nhập InputBox.

Vậy để sử dụng MessageBox và InputBox, thì trong bài này mình sẽ chia sẻ với các bạn cách sử dụng thông qua các ví dụ cụ thể.

Cách sử dụng MessageBox và InputBox trong VBA Excel

1) MessageBox

Messagebox là một thành phần có sẵn trong VBA, được dùng để hiện một thông báo hướng dẫn hay cảnh báo dữ liệu không hợp lệ.

Cú pháp:
MsgBox(Prompt,[Buttons],[Title],[HelpFile],[Context])

Trong đó 3 tham số được dùng chủ yếu trong VBA là:

  • Prompt: Thông số bắt buộc. Đây là tham số để bạn nhập thông tin muốn hiển thị khi hiện trên hộp thoại MessageBox.
  • Buttons: Tham số tùy chọn. Là tham số chỉ thị loại nút nhấn được hiển thị.
  • Title: Tham số tùy chọn. Được dùng để đặt tiêu đề cho MessageBox.
Các tham số sử dụng cho hiển thị Buttons.
  • 0 – vbOKOnly – Chỉ hiện thị nút OK.
  • 1 – vbOKCancel – Hiển thị 2 nút OK và Cancel.
  • 2 – vbAbortRetryIgnore – Hiển thị 3 nút Abort (Hủy bỏ), Retry (thử lại) và Ignore (bỏ qua).
  • 3 – vbYesNoCancel – Hiển thị 3 nút Yes, No, Cancel.
  • 4 – vbYesNo – Hiển thị 2 nút Yes và No.
  • 5 – vbRetryCancel – Hiện thị 2 nút Retry và Cancel.
  • 16 – vbCritical – Hiển thị icon ❌.
  • 32 – vbQuestion – Hiển thị icon ❔.
  • 48 – vbExclamation – Hiển thị icon ⚠
  • 64 – vbInformation – Hiển thị icon ℹ.

💡 Bạn có thể kết hợp các tham số (16, 32,48,72) với các tham số (0, 1, 2, 3, 4, 5) để tùy chỉnh thông báo cho MessageBox.

MessageBox có thể trả về một trong các giá trị sau khi bạn nhấn vào các nút trên:
  • 1 – vbOK – Nút OK được nhấn.
  • 2 – vbCancel – Cancel được nhấn
  • 3 – vbAbort – Abort được nhấn
  • 4 – vbRetry – Retry được nhấn
  • 5 – vbIgnore – Ignore được nhấn
  • 6 – vbYes – Yes được nhấn
  • 7 – vbNo – No được nhấn

💡 Khi sử dụng tham số Buttons thì bạn có thể sử dụng mã lệnh dạng số hoặc mã lệnh gợi nhớ. Ví dụ: bạn có thể sử dụng mã 1 hoặc mã vbOKCancel.

Ví dụ 1: Hiển thị MessageBox với 2 nút nhấn Yes và No.
Sub message_box()
MsgBox "Cac bai viet tren ChiTietCach.Com co huu ich voi ban khong?", 4, "ChiTietCach.Com"
End Sub

messagebox-inputbox-vba-excel-146-2

Ví dụ 2: Lấy tham số trả về của nút nhấn trong MessageBox.
Sub message_box()
Dim giatriMsg As Integer
giatriMsg = MsgBox("Cac bai viet tren ChiTietCach.Com co huu ich voi ban khong?", vbInformation + vbYesNo, "ChiTietCach.Com")
If (giatriMsg = vbYes) Then
MsgBox "Huu ich"
Else
MsgBox "Không huu ich"
End If
End Sub

Kết quả: Khi khởi chạy bạn sẽ có hộp thoại hiển thị:

messagebox-inputbox-vba-excel-146-3

Khi nhấn vào Yes: tức là điều kiện If (giatriMsg = vbYes) đúng:

messagebox-inputbox-vba-excel-146-4

Khi nhấn vào No: tức là điều kiện nhánh Else sẽ đúng:

messagebox-inputbox-vba-excel-146-5

2) Input Box

InputBox là một hộp thoại nhập liệu có sẵn trong VBA và chỉ hỗ trợ nhập 1 trường thông tin. Khi nhập giá trị, nếu chọn OK hoặc nhấn phím Enter trên bàn phím thì InputBox sẽ trả về giá trị của ô nhập. Hoặc chọn Cancel thì InputBox sẽ trả về giá trị rỗng.

Cú pháp
InputBox(Prompt,[Title],[Default],[Xpos],[Ypos],[HelpFile],[Context])

Trong đó, 3 thông số được dùng chủ yếu trong VBA là:

  • Prompt: Tham số bắt buộc. Được dùng để đặt tên cho giá trị nhập. Ví dụ: khi bạn có nhiều trường thông tin, thì Prompt có thể được dùng để đặt tên cho trường nhập.
  • Title: Tham số tùy chọn. Được dùng để đặt tiêu đề cho InputBox.
  • Default: Tham số tùy chọn. Giá trị mặc định mỗi khi InputBox được hiển thị.
Ví dụ 1: Hiển thị InputBox với giá trị mặc định là “VBA Excel”
Sub in_put_box()
Dim str As String
str = inputbox("Input Box", "ChiTietCach.Com", "VBA Excel")
End Sub

Kết quả: Khi chạy hàm trên bạn sẽ được hộp thoại như sau:

messagebox-inputbox-vba-excel-146-1

Ví dụ 2: Lấy giá trị trả về của InputBox và ghi vào Cells A1 của Sheet1.

Tiếp theo của ví dụ 1, bạn thêm vào đoạn lệnh Sheets(1).Cells(1, 1).Value = str và chạy hàm.

Sub ghi_gia_tri_A1()
Dim str As String
str = inputbox("Input Box", "ChiTietCach.Com", "VBA Excel")
Sheets(1).Cells(1, 1).Value = str
End Sub

Kết quả: Chạy hàm, nhập nội dung vào InputBox và chọn OK

messagebox-inputbox-vba-excel-146-6

Giá trị trả về của InputBox sẽ được ghi vài Cells A1.

messagebox-inputbox-vba-excel-146-7


OK! Trên đây là cách sử dụng 2 công cụ MessageBox và InputBox trong VBA Excel. Đây là 2 công cụ có sẵn và rất dễ sử dụng. Bạn có thể sử dụng MessageBox để tạo một thông báo cho một sự kiện thay đổi hay dùng InputBox để quy định giá trị nhập cho một trường thông tin trong Excel.

Hy vọng bài chia sẻ này hữu ích với cách bạn.

Chúc các bạn thành công!

BÌNH LUẬN

Please enter your comment!
Please enter your name here