Tôi đang tìm một giải pháp thanh lịch để xác định xem một biến thể có phải là một số nguyên trong VBA hay không. Thật không may, nếu biến thể được tạo ra từ một chuỗi, tôi bị mắc kẹt. Dưới đây là một kịch bản thử nghiệm nhỏ:Làm cách nào để xác định xem một biến thể có phải là một số nguyên trong VBA không?
dim v as variant
v = "42"
if v <> round(v) then
msgBox("<>")
end if
Ở đây, MsgBox bật lên, có lẽ vì các biến thể được tạo ra từ một chuỗi, mặc dù tôi dự kiến sẽ có v là = round (v).
Có thể bạn nên tự hỏi liệu mình có thực sự cần xử lý bất kỳ biến thể nào và bất kỳ số nguyên nào không. Điều gì về một chuỗi 1000 chữ số? Điều gì về tách rời đôi bên ngoài phạm vi của một Long? Nó sẽ dễ dàng hơn rất nhiều nếu bạn xác định chính xác những gì bạn cần và sau đó mã chỉ đó. Nó không phải là vấn đề tương tự, nhưng xem câu trả lời này của Eric Lippert cho một câu hỏi khác ở đây trên Stackoverflow: http://stackoverflow.com/questions/921180/c-round-up/926806#926806 – jtolle