Trouver ZEROth Dimension Array

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.