Trong nhiều ngôn ngữ có thể kiểm tra xem một đối tượng có thể lặp lại hay không, làm cách nào để thực hiện điều này cho VBA?Kiểm tra xem giá trị có thể lặp lại vba
tôi có thể thử:
Function isIterable(obj As Variant) As Boolean
On Error Resume Next
Dim iterator As Variant
For Each iterator In obj
Exit For
Next
isIterable = Err.Number = 0
End Function
Nhưng tôi tự hỏi, nếu có một dựng sẵn hoặc một cách tiếp cận tốt hơn?
Lưu ý rằng trong khi chức năng của bạn hỗ trợ mảng, mảng nên được lặp với một 'loop For', không phải là một ' Đối với mỗi '(vì lý do hiệu suất đáng kể). Mã gọi điện thoại nên kiểm tra biến thể đó với 'IsArray' thay thế. –
Nhưng vì anh ta chỉ lặp lại mục đầu tiên trong danh sách để kiểm tra khả năng lặp lại (bây giờ là một từ!), Nó sẽ không quan trọng lắm, @ Mat'sMug. – FreeMan
@FreeMan không có chức năng * that * - nhưng nếu một số mã đang gọi hàm này để khám phá xem có thể lặp lại điều gì đó với vòng lặp 'For Each' hay không, và hàm sẽ nhận một mảng và nói" yeah sure ". có vẻ hợp lý để giả định rằng mã gọi sẽ phân nhánh thành một vòng lặp 'For Each' trên bất kỳ' obj' nào. Và nếu đó là một mảng, thì nó không hiệu quả. –