Bạn có biết rằng có thể phân biệt giữa người dùng nhấp "OK" trên InputBox với "Hủy", ngay cả khi họ không nhập bất kỳ văn bản nào?
Hãy xem xét mã mẫu sau:
Sub InputBoxTest()
Dim Result As String
Result = InputBox("Leave this box blank")
If StrPtr(Result) = 0 Then
Debug.Print "User clicked [Cancel]"
ElseIf Len(Result) = 0 Then
Debug.Print "User clicked [OK]"
Else
Debug.Print "User can't follow instructions"
End If
End Sub
Đây là mã thử nghiệm đang hoạt động:
Nếu bạn quan tâm đến lý do tại sao điều này hoạt động, tôi khuyên bạn nên đặt câu hỏi sau trên stackoverflow:Những lợi ích và rủi ro của việc sử dụng StrPtr trong VBA là gì? Cả hai câu trả lời được bình chọn nhiều nhất (từ người dùng Comintern và GSerg) đều đáng đọc để có kiến thức nền tảng.
Tham chiếu bên ngoài
Hàm InputBox (Visual Basic for Applications) Microsoft Docso365devx Những lợi ích và rủi ro khi sử dụng hàm StrPtr trong VBA là gì? Trong khi đang tìm cách kiểm tra khi người dùng hủy InputBox, tôi tình cờ gặp hàm StrPtr. Tôi tin rằng nó sẽ kiểm tra xem một biến đã từng được gán giá trị hay chưa và trả về 0 nếu nó chưa bao giờ Stack OverflowChrisB