Nếu bạn mới bắt đầu phát triển macro, bạn có thể đang tìm một cách đơn giản để cung cấp một tập hợp các lựa chọn cho người dùng, sau đó thực hiện hành động dựa trên phản hồi của người dùng. Đây là một nhiệm vụ tương đối đơn giản, nếu bạn sử dụng chức năng InputBox cùng với cấu trúc Select Case.

Nhiệm vụ đầu tiên là thiết lập InputBox của bạn để nó hiển thị thông tin cho người dùng. Ví dụ: giả sử bạn có năm tùy chọn và bạn muốn người dùng chọn một tùy chọn từ năm tùy chọn đó. Bạn có thể sử dụng đoạn mã sau để tập hợp năm tùy chọn, mỗi tùy chọn trên một dòng riêng của chúng:

Prompt = "1. This is your first choice" & vbCrLf Prompt = Prompt & "2. This is your second choice" & vbCrLf Prompt = Prompt & "3. This is your third choice" & vbCrLf Prompt = Prompt & "4. This is your fourth choice" & vbCrLf Prompt = Prompt & "5. This is your fifth choice"

Bây giờ bạn có thể sử dụng chuỗi Lời nhắc khi bạn gọi hàm InputBox trong macro của mình. Sau đó, bạn dịch những gì người dùng phản hồi thành một số thể hiện sự lựa chọn của họ từ năm lựa chọn của bạn. Mã để thực hiện việc này như sau:

UserResp = InputBox(Prompt, "The Big Question")

UR = Val(UserResp)

Trong ví dụ này, phản hồi từ hàm InputBox được gán cho biến UserResp, biến này sẽ được định kích thước như một chuỗi. Biến UR, nên được ghi kích thước dưới dạng số nguyên, sau đó được đặt dựa trên giá trị của chuỗi. (Hàm Val trả về giá trị trong một chuỗi.)

Điều duy nhất cần làm là thực hiện một hành động dựa trên số đã được chọn, từ 1 đến 5. Bạn có thể sử dụng cấu trúc Chọn trường hợp để thực hiện việc này.

Chương trình con đầy đủ có thể xuất hiện như sau:

Sub Macro1()

Dim Prompt As String     Dim UserResp As String     Dim UR As Integer

Prompt = "1. This is your first choice" & vbCrLf     Prompt = Prompt & "2. This is your second choice" & vbCrLf     Prompt = Prompt & "3. This is your third choice" & vbCrLf     Prompt = Prompt & "4. This is your fourth choice" & vbCrLf     Prompt = Prompt & "5. This is your fifth choice"

UR = 0     While UR < 1 Or UR > 5         UserResp = InputBox(Prompt, "The Big Question")

UR = Val(UserResp)

Wend     Select Case UR         Case 1             'Do stuff for choice 1 here         Case 2             'Do stuff for choice 2 here         Case 3             'Do stuff for choice 3 here         Case 4             'Do stuff for choice 4 here         Case 5             'Do stuff for choice 5 here     End Select End Sub

Lưu ý rằng ví dụ này sử dụng vòng lặp While …​ Wend xung quanh hàm InputBox. Điều này được thực hiện để đảm bảo rằng người dùng nhập một số từ 1 đến 5. Nếu giá trị đã nhập nằm ngoài phạm vi đó, thì người dùng chỉ cần được hỏi lại.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3098) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: