2008-11-07 7 views

Répondre

7
Ubound(MySingleDimensionalArray, 2) ' Number of Array Elements 

Ubound(MyMultiDimensionalArray, 1) ' Number of Columns 
Ubound(MyMultiDimensionalArray, 2) ' Number of Rows 
+0

Si MySingleDimensionalArray est un tableau à une seule dimension, votre première ligne sera erronée. – jammus

2
function ArrayDimensions(theArray) 
    dim Result,test 
    Result = 0 
    if isarray(theArray) then 
     on error resume next 
      do 
       test = -2 
       test = ubound(theArray,result+1) 
       if test > -2 then result = result + 1 
      loop until test=-2 
     on error goto 0 
    end if 
    ArrayDimensions = Result 
end function 
+0

intéressant, il obtient la bonne dimension! mais comment obtenez-vous les valeurs d'un tableau de dimension inconnue, comment itérer à travers toutes les «cellules de tableau»? Si la dimension est connue, alors la syntaxe est Response.Write (myArr (1,2,3,4))! – armen

4

Une approche similaire à celle feihtthief réponse ici que je suppose que c'est ce que vous voulez plutôt que la taille d'une dimension spécifiée.

Function NumDimensions(arr) 
    Dim dimensions : dimensions = 0 
    On Error Resume Next 
    Do While Err.number = 0 
     dimensions = dimensions + 1 
     UBound arr, dimensions 
    Loop 
    On Error Goto 0 
    NumDimensions = dimensions - 1 
End Function 

Puis l'appeler comme ceci:

Dim test(9, 5, 4, 3, 9, 1, 3, 5) 
NumDimensions(test) 

vous donnera la valeur 8

Il est un peu merdique, mais ça va faire ce que vous avez demandé.

Questions connexes