Variables de tableau à l’aide de VBA dans Microsoft Excel 2010
Comment utiliser Excel VBA Array?
Vous pouvez exécuter les macros à partir de Visual Basic Editor en plaçant votre curseur dans la macro et en appuyant sur la touche F5, ou à partir d’Excel en ouvrant la boîte de dialogue Macros (ALT + F8) en choisissant la macro à exécuter et en cliquant sur Exécuter. Il est préférable d’exécuter ces macros à partir de Visual Basic Editor en utilisant Déboguer> Pas à pas (en appuyant sur F8) afin de pouvoir les regarder pendant qu’elles fonctionnent. Instruction Si l’onglet Développeur n’est pas dans le ruban .. Ouvrez Excel.
-
Allez dans l’éditeur VBA (appuyez sur Alt + F11)
-
Allez dans la fenêtre immédiate. (Ctrl + G)
-
Écrivez ci-dessous le code.
Application.ShowDevTools = True
Comment insérer du code VBA dans Excel
Allez dans l’onglet Développeur> Groupe de code> * Visual Basic
Cliquez sur Insérer> * Module.
-
Ouvre un module vierge pour vous.
-
Écrire / coller le code fourni dans ce module
Comment exécuter du code VBA dans Excel
Sélectionnez n’importe où entre le code, * Sub… End Sub
Cliquez sur Run & Run Sub * ou
F5
Variables de tableau statiques Au lieu d’utiliser plusieurs variables uniques pour stocker des informations, vous pouvez utiliser une variable de tableau.
Lorsque vous savez combien d’éléments vous devez stocker dans le tableau, vous pouvez utiliser une variable de tableau statique comme celle-ci:
Code Sub TestStaticArray () 'stocke 10 noms dans le classeur dans la variable de tableau MyNames () Dim MyNames (1 To 10) As String' déclare une variable de tableau statique Dim iCount As Integer For iCount = 1 To ThisWorkbook. Sheets.Count MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Name Debug.Print MyNames (iCount) Next iCount Erase MyNames () 'supprime le contenu de la variable, libère de la mémoire End Sub
==== Decode
Dim MyNames (1 à 10) As String
Nous avons dimensionner un seul MyNames vérifiable en tant que chaîne, qui peut contenir 10 éléments. Donc MyNames veriable est un type Array.
Dim iCount As Integer
Nous avons déclaré une seule variable iCount en tant qu’entier, qui ne peut contenir que des nombres entiers numériques Valeur
Pour iCount = 1 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets.Count nous donnera le nombre de feuilles dans un classeur.
Ce classeur fait référence au classeur dans lequel le code a été écrit.
MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Name
À l’aide d’une boucle, nous attribuons le nom de chaque feuille à un seul vérifiable appelé MyNames. MyNames est un type de tableau vérifiable, il stockera donc chaque nom de feuille dans chaque élément du tableau.
Debug.Print MyNames (iCount)
Juste après avoir attribué la valeur à chaque élément d’un tableau, il imprimera la même chose dans ImmediateWindow, par défaut dans le bas de la fenêtre VBA.
Vous pouvez afficher l’affectation de chaque valeur et afficher sa valeur dans ImmediateWindow.
iCount suivant
Next est utilisé pour indiquer à For Loop dans Excel VBA, de répéter à nouveau la même tâche, en augmentant le compteur iCount, jusqu’à ce que iCount atteigne le nombre total de feuilles, dans le classeur.
Variables de tableau dynamique Les variables de tableau dynamique sont utiles lorsque vous ne savez pas à l’avance le nombre d’éléments sur lesquels vous devez stocker des informations.
Vous déclarez des variables de tableau dynamique comme une variable de tableau statique, sauf que vous ne donnez aucune information sur la taille du tableau.
Dans l’exemple ci-dessus (Dim MyNames (1 à 10) As String) si le nombre de feuilles est supérieur à 10, il y aura une erreur, car MyNames ne pourra pas stocker plus de 10 éléments.
Code Sub TestDynamicArray () 'stocke tous les noms du classeur dans la variable de tableau MyNames () Dim MyNames () As String' déclare une variable de tableau dynamique Dim iCount As Integer Dim Max As Integer Max = ThisWorkbook.Sheets. Count 'trouve la taille maximale du tableau ReDim MyNames (1 To Max)' déclare la variable tableau avec la taille nécessaire For iCount = 1 To Max MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Name MsgBox MyNames (iCount) Next iCount Erase MyNames () 'supprime le contenu de la variable, libère de la mémoire End Sub
==== Decode
Dim MyNames () As String
Nous avons dimensionné un seul MyNames vérifiable en tant que chaîne, qui est un type de tableau, en raison de l’ouverture et de la fermeture de Paranthesis, après le nom vérifiable, mais nous ne pourrons y stocker aucune donnée, car nous n’avons pas fourni son niveau supérieur.
ReDim MyNames (1 à Max)
Redim est utilisé pour redimensionner le tableau, il attribuera maintenant le niveau supérieur du type de tableau vérifiable.
Dans ce cas, nombre total de feuilles dans le classeur (Max = ThisWorkbook.Sheets.Count)
===
MsgBox MyNames (iCount)
Dans le dernier exemple, nous avons imprimé la valeur dans les variables dans la fenêtre immédiate, cette fois, nous imprimons la valeur dans un MessageBox, qui apparaîtra comme ceci ..
Si vous savez que vous aurez besoin d’une variable de tableau avec 1 000 éléments, utilisez une variable statique. L’inconvénient est que vous utiliserez la mémoire pour 1000 éléments à chaque fois, également dans les cas où vous ne stockez que des informations sur 10 éléments. Si vous utilisez une variable de tableau dynamique, vous utiliserez la mémoire plus efficacement.
Parfois, il n’est pas possible de calculer la taille de la variable de tableau. Dans ces cas, la taille de la variable de tableau doit être augmentée si nécessaire. Lorsque vous utilisez une instruction ReDim pour modifier la taille de la variable de tableau, le contenu de la variable est également effacé pour éviter de supprimer le contenu de la variable lorsque vous redimensionnez la variable de tableau dont vous aurez besoin pour utiliser l’instruction ReDim Preserve.
Code Sub GetFileNameList () 'stocke tous les noms de fichiers dans le dossier actuel Dim FolderFiles () As String' déclare une variable de tableau dynamique Dim tmp As String, fCount As Integer fCount = 0 tmp = Dir (" D: \ Test \. ") While tmp <> Empty fCount = fCount + 1 ReDim Preserve FolderFiles (1 To fCount) 'déclare à nouveau la variable de tableau (taille + 1) FolderFiles (fCount) = tmp tmp = Dir Wend MsgBox fCount & trouvé dans le dossier «& CurDir Erase FolderFiles» supprime le contenu de la variable, libère de la mémoire End Sub
==== Decode
Dim FolderFiles () As String
Nous avons dimensionné un seul FolderFiles vérifiable en tant que chaîne, qui est un type de tableau, en raison de l’ouverture et de la fermeture de Paranthesis, après le nom vérifiable, mais nous ne serons pas en mesure d’y stocker des données, car nous n’avons pas fourni son niveau supérieur.
tmp = Dir (« D: \ Test \. »)
La commande Dir fonctionne comme un explorateur, qui peut contenir le nom de tous les fichiers et dossiers d’un répertoire. Vous pouvez également limiter tous les fichiers à certains critères spécifiques. Dir (« D: \ Test \ *. Pdf ») limitera tous les fichiers aux seuls fichiers PDF ou extension.
Tant que tmp <> Vide
Au lieu de Pour la boucle dans Excel VBA, cette fois, nous répétons la même action, en utilisant Excel VBA WHILE LOOP, où le critère de fin de boucle était défini comme tmp différent de vide. Donc, jusqu’à ce qu’il y ait une valeur dans tmp vérifiable, la boucle sera travail.
ReDim Preserve FolderFiles (1 To fCount)
Array veriable FolderFiles n’a pas de niveau supérieur à la position de départ. Mais, à chaque répétition, il sera augmentez son niveau supérieur par la commande ReDim. Dans la première exécution 1, puis 2 .. et ainsi de suite, jusqu’à fCount. Cependant, à chaque fois que vous augmentez le niveau supérieur, il perdra toutes les variables déjà affectées. En utilisant la commande Preserve, nous pouvons maintenir ou stocker la valeur déjà attribuée.
Wend
Wend utilisé pour dire des boucles For dans VBA, pour répéter la même tâche, jusqu’à ce que les critères soient remplis.
MsgBox fCount & « les noms de fichiers se trouvent dans le dossier » & CurDir
A chaque répétition, fcout augmentera de +1, et sa valeur finale sera le nombre de fichiers trouvés sur ce répertoire / dossier. La commande CurDir donne le nom du répertoire courant. Dans ce cas «D: \ Test»