W wielu językach możliwe jest sprawdzenie, czy obiekt jest możliwy do sprawdzenia, jak to zrobić dla VBA?Sprawdź, czy wartość jest iterowalna vba
mogę spróbować:
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
Ale zastanawiam się, czy istnieje wbudowane lub lepsze podejście?
Należy pamiętać, że w czasie, gdy funkcja obsługuje tablice, tablice należy powtórzyć z 'For' pętli, a nie' Dla każdego "(z ważnych powodów związanych z wydajnością). Kod wywołujący powinien przetestować ten wariant za pomocą 'IsArray'. –
Ale ponieważ tylko iteruje pierwszy element na liście, aby przetestować pod kątem możliwości iteracji (teraz jest to słowo!), Nie będzie to miało większego znaczenia, @ Mat'sMug. – FreeMan
@FreeMan nie w * tej * funkcji - ale jeśli jakiś kod wywołuje tę funkcję, aby odkryć, czy coś może być iterowane za pomocą pętli 'For Each', a funkcja pobiera tablicę i mówi" tak, oczywiście, nie ma problemu ", to wydaje się rozsądne założenie, że kod wywołujący rozgałęzi się do pętli 'For Each' na czymkolwiek' obj'. A jeśli to tablica, to jest cholernie nieefektywna. –