Normalement, lorsque vous cherchez une quantité de diensions, ou leurs bornes, vous pouvez utiliser UBound, et LBound.
Je suis bloqué maintenant parce que j'ai un tableau dynamic et je veux vérifier s'il avait son premier ReDim (ou s'il a au less une dimension).
Sans une seule dimension, UBound (array, 1) est hors de scope.
Alors, comment vérifie-t-il si elle n'a pas de dimesions?
Le résultat devrait être plus ou less comme ceci:
Dim array() If NO_DIMENSIONS Then ...something... End if
Vous pouvez utiliser un piégeage par erreur pour y parvenir.
Function NumberOfDimensions(arr As Variant) 'Sets up the error handler. On Error GoTo FinalDimension 'Visual Basic for Applications arrays can have up to 60000 'dimensions; this allows for that. For DimNum = 1 To 60000 'It is necessary to do something with the LBound to force it 'to generate an error. ErrorCheck = LBound(arr, DimNum) Next DimNum FinalDimension: NumberOfDimensions = DimNum - 1 End Function
Ce code a été modifié dans une fonction à partir du code extrait du support Microsoft .
Donc vous utiliserez comme tel:
Dim testArr() If NumberOfDimensions(testArr) = 0 Then 'Do Something End If
Dans cette méthode, vous supprimez cette erreur hors limites et l'utilisez pour countr le nombre de dimensions.