Ce didacticiel abordera les tableaux 2D et multidimensionnels en VBA.
Tableau multidimensionnel (tableaux 2D)
Les tableaux multidimensionnels sont des tableaux qui contiennent plus d'une dimension, généralement deux ou trois dimensions, mais les tableaux peuvent avoir jusqu'à 32 dimensions.
Déclarer un tableau 2D
Pour créer un tableau avec plusieurs dimensions, utilisez des virgules pour définir chaque dimension distincte :
1 | Dim intArr(2,3) en tant qu'entier |
Remplissage d'un tableau 2D
Le code ci-dessous remplira un tableau 2D, puis remplira les lignes et les colonnes d'une feuille de calcul avec les valeurs du tableau.
1234567891011121314151617181920212223242526 | Sous-peupler2D()'déclare le tableau 2DDim intA(2, 3) en tant qu'entier'déclarer des variablesDim rw en tant qu'entierDim col As Integer'remplir le tableauintA(0, 0) = 45intA(0, 1) = 50intA(0, 2) = 55intA(0, 3) = 60intA(1, 0) = 65intA(1, 1) = 70intA(1, 2) = 75intA(1, 3) = 80intA(2, 0) = 85intA(2, 1) = 90intA(2, 2) = 95intA(2, 3) = 100'boucler dans le tableau et remplir ExcelPour rw = 0 à 2Pour col = 0 à 3Cells(rw + 1, col + 1).Valeur = intA(rw, col)Col suivantRw suivanteFin du sous-marin |
Votre feuille de calcul Excel doit ensuite être remplie comme suit.
Remplir un tableau 2D à partir de données Excel
Le code ci-dessous remplira un tableau 2D à partir d'une feuille de calcul Excel, puis remplira une autre feuille avec les données.
1234567891011121314151617181920212223242526 | Sous-peupler2D()'Déclarer les feuilles de travailDim ws_Source en tant que feuille de calculDim ws_Destination en tant que feuille de calcul'Déclarer le tableauDim wsData (10, 2) en tant que variante'Déclarer les variablesDim rw comme entierDim col As Integer'se référer à la fiche sourceDéfinir ws_Source = Worksheets("Sheet1")'obtenir les informations de la feuille source et remplir le tableauPour rw = LBound(wsData, 1) À UBound(wsData, 1)Pour col = LBound(wsData, 2) À UBound(wsData, 2)wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).ValueCol suivantRw suivante'se référer à la fiche de destinationDéfinir ws_Destination = Worksheets("Sheet2")' remplir la feuille de destination à partir du tableauPour rw = LBound(wsData, 1) À UBound(wsData, 1)Pour col = LBound(wsData, 2) À UBound(wsData, 2)ws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw,col)Col suivantRw suivanteFin du sous-marin |
Redimensionnement à l'aide de ReDim et Re-Dim Preserve
Vous pouvez redimensionner un tableau en utilisant ReDim.
1234567891011121314151617 | Sous-redimensionner2D()'déclare le tableauDim varArray() en tant que variante'déclare la taille du tableauReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Comptable"varArray(1, 1) = "Secrétaire"varArray(1, 2) = "Docteur"'redéclarer la taille du tableauReDim varArray(0, 1)'repeupler le tableauvarArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"Fin du sous-marin |
Lorsque vous redéclarez le tableau, vous perdrez toutes les données précédemment détenues dans le tableau, sauf si vous utilisez le Déclaration de préservation ReDim.
12345678910111213141516 | Sous-redimensionner2D()'déclare le tableau Dim varArray() comme Variant'déclare la taille du tableauReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Comptable"varArray(1, 1) = "Secrétaire"varArray(1, 2) = "Docteur"'redéclarer la taille du tableauReDim Preverve varArray(1, 3)'remplir le tableau avec des valeurs supplémentairesvarArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Plombier"Fin du sous-marin |
Vous ne pouvez redimensionner la dernière dimension d'un tableau que si vous souhaitez conserver les données d'origine dans le tableau avec Re-Dim Conserver.
Lorsque vous cliquez sur déboguer, l'erreur sera mise en surbrillance, indiquant que la première dimension du tableau n'est pas la même que la première dimension lorsque la taille du tableau a été déclarée à l'origine.