excel vba array array methods with examples
Ce didacticiel expliquera VBA Array, divers types de tableaux, des variantes de tableau et des méthodes de tableau à l'aide d'exemples de programmation:
Une variable VBA standard est un espace réservé qui stocke la valeur d'une seule donnée. Il a une relation de 1 à 1, c'est-à-dire 1 variable pour 1 valeur.
Imaginez maintenant stocker plusieurs valeurs du même type. Au lieu de créer plusieurs variables, vous pouvez simplement créer une variable et stocker tous les mêmes types de valeurs. Cette variable est appelée un ARRAY.
=> Visitez ici pour voir la série de formations VBA pour tous
sites pour télécharger des vidéos sur youtube
Dans ce didacticiel, vous apprendrez à savoir ce qu'est un tableau VBA, des tableaux unidimensionnels et bidimensionnels ainsi que les différents types de tableaux tels que fixe et dynamique. Nous comprendrons également diverses méthodes de tableau utilisées dans VBA.
Ce que vous apprendrez:
Baie VBA
Les tableaux sont un type spécial de variable qui peut stocker plusieurs valeurs du même type de données.
Par exemple, si vous avez les noms de 100 employés, alors au lieu de créer 100 variables de type chaîne de données, vous pouvez simplement créer une variable de tableau de type chaîne et affecter 100 valeurs à la même variable de tableau.
Réseau unidimensionnel
Un tableau qui contient tous les éléments sur une seule ligne ou dans une seule colonne est appelé un tableau à une dimension. La liste des noms de tous les élèves de la classe dans une seule colonne est un exemple de tableau unidimensionnel. Il est déclaré comme indiqué ci-dessous.
Dim arrayname (Lowerbound To UpperBound) As DataType
Il existe plusieurs façons de déclarer un tableau. Voici quelques exemples.
Exemple:
# 1) Dim MyArrayExample (0 To 3) As Integer
Crée un tableau avec l'emplacement 0,1,2,3 qui acceptera des valeurs entières.
# 2) Dim MyArray2 (3) As String
La valeur par défaut est de 0 à 3 et crée un tableau avec l'emplacement 0,1,2,3 qui acceptera les valeurs de chaîne.
# 3) Dim MyArray2 (13 à 15) comme double
Crée un tableau à partir de 13, c'est-à-dire 13, 14 et 15, et accepte les valeurs Double. Nous avons mentionné la limite inférieure comme 13, donc le tableau commencera à allouer des valeurs à partir de l'emplacement 13 plutôt que 0.
Créons un code simple et comprenons les 3 méthodes de déclaration de tableau.
Remarque: Pour écrire du code VB, ouvrez Microsoft Excel (les versions prises en charge sont Excel 2007, 2010, 2013, 2016, 2019). Aller vers Onglet Développeur -> Visual Basic (Vous pouvez également utiliser le raccourci Alt + F11). Dans l'éditeur VB, cliquez sur Insérer -> Module et collez le code ci-dessous.
Considérez la procédure ci-dessous montrant les différents types de déclarations.
Private Sub arrayExample1() Dim firstQuarter(0 To 2) As String ‘creates array with index 0,1,2 firstQuarter(0) = 'Jan' firstQuarter(1) = 'Feb' firstQuarter(2) = 'Mar' MsgBox 'First Quarter in calendar ' & ' ' & firstQuarter(0) & ' ' & firstQuarter(1) & ' ' & firstQuarter(2) End Sub Private Sub arrayExample2() Dim secondQuarter(2) As String ‘creates array with index 0,1,2 secondQuarter(0) = 'April' secondQuarter(1) = 'May' secondQuarter(2) = 'June' MsgBox 'Second Quarter in calendar ' & ' ' & secondQuarter(0) & ' ' & secondQuarter(1) & ' ' & secondQuarter(2) End Sub Private Sub arrayExample3() Dim thirdQuarter(13 To 15) As String ‘creates array with index 13,14,15 thirdQuarter(13) = 'July' thirdQuarter(14) = 'Aug' thirdQuarter(15) = 'Sep' MsgBox 'Third Quarter in calendar ' & ' ' & thirdQuarter(13) & ' ' & thirdQuarter(14) & ' ' & thirdQuarter(15) End Sub
Appuyez sur F5 ou appuyez sur le bouton Exécuter de la barre d'outils pour exécuter le code.
Variable régulière vs variable de tableau
Nous savons maintenant comment fonctionne un tableau unidimensionnel. Alors prenons un moment pour comprendre pourquoi les tableaux sont si cruciaux dans les langages de programmation.
Supposons que vous deviez entrer le salaire de 5 employés. Pour y parvenir en utilisant une variable régulière, vous devez créer 5 variables.
Public Sub RegularVariable() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets('Sheet1') ' Declare variable for each student Dim Emp1 As String Dim Emp2 As String Dim Emp3 As String Dim Emp4 As String Dim Emp5 As String ' Read student marks from cell Emp1 = shet.Range('A' & 2).Value Emp2 = shet.Range('A' & 3).Value Emp3 = shet.Range('A' & 4).Value Emp4 = shet.Range('A' & 5).Value Emp5 = shet.Range('A' & 6).Value ' Print student marks Debug.Print 'Emp Name' Debug.Print Emp1 Debug.Print Emp2 Debug.Print Emp3 Debug.Print Emp4 Debug.Print Emp5 End Sub
Créons maintenant le même code en utilisant une variable Array.
Option Explicit Public Sub ArrayVarible() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets('Sheet1') Dim Employee(1 To 6) As String Dim i As Integer For i = 1 To 6 Employee(i) = shet.Range('A' & i).Value Debug.Print Employee(i) Next i End Sub
Ici, nous venons d'utiliser une variable de tableau qui stockera tous les noms d'employés. Supposons que vous ayez besoin d'ajouter 100 noms d'employés supplémentaires, il vous suffit de modifier la taille du tableau et de ne pas avoir à créer de nouvelle variable.
Cela réduira le nombre de lignes dans le code et le rendra ainsi facilement compréhensible et lisible.
Réseau bidimensionnel
Un tableau à 2 dimensions a 2 index - le premier index représentera les lignes et le 2ème index représentera la colonne. Il comporte plusieurs lignes et colonnes et est généralement représenté sous forme de tableau.
La déclaration d'un tableau 2 dim est la suivante:
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) As DataType.
Prenons un exemple de stockage des notes de 2 étudiants obtenues dans 3 matières. Nous allons donc créer un tableau à 2 dimensions qui prend 2 lignes et 3 colonnes.
Nous allons commencer le tableau de la ligne 1 à la ligne 2 et de la colonne 1 à la colonne 3.
Sub Twodim() Dim totalMarks(1 To 2, 1 To 3) As Integer totalMarks(1, 1) = 23 totalMarks(2, 1) = 34 totalMarks(1, 2) = 33 totalMarks(2, 2) = 55 totalMarks(1, 3) = 45 totalMarks(2, 3) = 44 Msgbox “Total Marks in Row 2 and column 2 is “ &totalMarks(2,2) Msgbox “Total Marks in Row 1 and column 3 is “ &totalMarks(1,3) End Sub
Appuyez sur F5 ou appuyez sur le bouton Exécuter de la barre d'outils pour exécuter le code.
Ligne 2 et colonne 2
Ligne 1 et colonne 3
Tableaux fixes
Les tableaux fixes également appelés tableaux statiques ont une limite inférieure et une limite supérieure fixes et cette taille ne peut pas être modifiée au moment de l'exécution. La taille du tableau est spécifiée lors de la déclaration entre parenthèses. Tous les exemples ci-dessus sont des tableaux fixes car nous en avons mentionné la taille lors de la déclaration.
Les tableaux fixes sont généralement utilisés lorsque vous êtes sûr de la taille du tableau. Par exemple, le nombre de jours dans une semaine, vous pouvez créer un tableau avec une borne inférieure 0 et une borne supérieure 6 et être sûr que vous ne modifierez jamais sa taille.
Tableaux dynamiques
Les tableaux dynamiques nous permettent de redimensionner le tableau pendant l'exécution. Celles-ci sont utiles lorsque vous n'êtes pas sûr de la taille du tableau. Supposons que lors de l'admission à l'université, vous ne soyez pas sûr du nombre d'étudiants qui obtiendront réellement l'admission, vous ne pouvez donc pas déterminer la taille au moment de la conception ou de la déclaration.
La déclaration d'un tableau dynamique est similaire à un tableau statique avec des parenthèses vides.
Dim Employee () As String
REDIM
Lorsque nous voulons changer la taille que nous devons utiliser REDIM , nous devons noter que la borne inférieure ne peut pas être modifiée, nous ne pouvons modifier que la borne supérieure du tableau.
Sub dynamicArray() Dim dynArray() As String Dim curdate As Date curdate = Now ReDim dynArray(2) ‘ Redim will help to change the array size during runtime dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled after ' & curdate & ' are “ & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) End Sub
Maintenant, nous savons que nous pouvons changer la taille du tableau pendant l'exécution, par conséquent, nous pouvons utiliser l'instruction ReDim chaque fois que nous devons augmenter la limite d'un tableau. Essayons d’augmenter la taille du tableau une fois de plus et d’ajouter un nouveau nom d’élève.
Sub RedimExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) ReDim dynArray(3) ‘ Redim will reinitialise the array and destroy the old values dynArray(3) = 'John' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) & ' , ' & dynArray(3) End Sub
Vous auriez remarqué que le résultat ne montrait pas les noms des étudiants ajoutés auparavant, il donne une valeur nulle. C'est parce que l'instruction Redim créera un nouveau tableau avec une nouvelle taille et détruira les anciennes valeurs.
ReDim Preserve
L'instruction Represerve nous aide à surmonter la limitation de ReDim en préservant les anciennes valeurs et en augmentant ainsi la taille du tableau.
Réécrivons le code ci-dessus à l'aide de ReDim Preserve.
Sub preserveExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) ReDim preserve dynArray(3) ‘ Redim preserve will retain the old values dynArray(3) = 'John' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) & ' , ' & dynArray(3) End Sub
Comme nous avons utilisé le mot-clé préserver, les valeurs précédemment entrées ne sont pas perdues et la nouvelle valeur est ajoutée avec succès.
Tableau de variantes
Jusqu'à présent, nous avons vu un tableau acceptant le même type de valeurs. Déclarons maintenant le tableau en tant que variante et stockons les différents types de données tels que String, Date, Long, Integer dans un seul tableau.
Exemple:
Sub arrayVariant() Dim arrayData(3) As Variant arrayData(0) = 'Vikram Vikrant' arrayData(1) = 411234567890# arrayData(2) = 38 arrayData(3) = '06-09-1972' MsgBox 'Details of person ' & arrayData(0) & ' is ' & ' Phone No ' & arrayData(1) & ' ,Id ' & arrayData(2) & ' ,DOB ' & arrayData(3) End Sub
Méthodes de baie VBA
Il existe plusieurs méthodes dans les tableaux VBA qui nous aideront à exécuter différentes fonctions, comme mentionné ci-dessous.
Sl. Non | Nom | Syntaxe | Description |
---|---|---|---|
7 | Rejoindre | Join (sourcearray, (delimiter)) | Joint plusieurs sous-chaînes dans un tableau et renvoie une valeur de chaîne. |
1 | Déployer | Array (frauduleux) | Convertit une variante régulière variable dans un tableau. |
deux | Effacer | Effacer arrayname | Utilisé pour réintégrer le tableau de taille fixe et libère la mémoire pour le tableau dynamique. |
3 | IsArray | IsArray (nom de variable) | Détermine si une variable est un tableau. |
4 | Lbound | LBound (ArrayName, (Dimension)) | Renvoie l'indice le plus bas d'un tableau. |
5 | Ubound | UBound (ArrayName, (Dimension)) | Renvoie l'indice le plus élevé d'un tableau. |
6 | Diviser | Fractionner (expression, (délimiteur, (limite, (comparer)))) | Il divise une chaîne en plusieurs sous-chaînes et renvoie un tableau de base zéro. |
8 | Filtre | Filtre (sourcearray, match, (include, (compare))) | Le filtre nous permettra de rechercher un correspondance spécifiée à partir d'un tableau. |
Discutons de chacun d'eux en détail avec un exemple.
# 1) Tableau
Déclarons une variable variante régulière et utilisons-la comme un tableau. Lorsque vous voulez changer une variable de variante régulière en un tableau, nous devons utiliser un DÉPLOYER fonction comme indiqué dans l'exemple ci-dessous.
Les fonctions de tableau acceptent un argument contenant des valeurs séparées par des virgules. Ces valeurs sont affectées en tant qu'élément du tableau.
Sub variantArray() Dim varData As Variant varData = Array('Mon Bel', '+61 112334123', 567, '06-09-1972') MsgBox 'Details of person ' & varData(0) & ' is ' & ' Phone No ' & varData(1) & ' ,Id ' & varData(2) & ' ,DOB ' & varData(3) End Sub
Vous devez identifier une variable de tableau à l'aide d'un index, par conséquent, dans l'exemple ci-dessus, les valeurs sont récupérées sous la forme varData (0) varData (2) varData (3).
# 2) Effacer
Cette fonction effacera toutes les valeurs entrées pour un tableau de taille fixe et libérera de l'espace mémoire pour un tableau dynamique.
Syntaxe: Erase arrayname
L'effacement a un comportement différent pour différents types de données, comme indiqué ci-dessous.
- Pour un numérique fixe: Toutes les valeurs sont remises à zéro.
- Pour un type de données chaîne fixe: Toutes les valeurs sont remises à zéro.
- Pour un tableau dynamique: Libère la mémoire utilisée par la baie.
Exemple:
Sub eraseExample() Dim NumArray(3) As Integer Dim decArray(2) As Double Dim strArray(2) As String NumArray(0) = 12345 decArray(1) = 34.5 strArray(1) = 'Erase Function' Dim DynaArray() ReDim DynaArray(3) MsgBox ' Values before Erase ' & (NumArray(0)) & ',' & (decArray(1)) & ' , ' & (strArray(1)) Erase NumArray Erase decArray Erase strArray Erase DynaArray ' Free the memory ' All values are erased. MsgBox ' Values after Erase ' & NumArray(0) & ',' & decArray(1) & ' , ' & strArray(1) End Sub
Résultat avant d'utiliser la fonction Effacer
Résultat après utilisation de Erase
# 3) IsArray
Cette fonction est utilisée pour déterminer si la variable d'entrée donnée est un tableau ou non. Il renvoie vrai si la variable saisie est vraie, sinon il retourne faux.
Syntaxe: IsArray (nom de la variable)
Exemple:
Sub isArrayTest() Dim arr1, arr2 As Variant arr1 = Array('Jan', 'Feb', 'Mar') arr2 = '12345' MsgBox ('Is arr1 an Array : ' & IsArray(arr1)) MsgBox ('Is arr2 an Array : ' & IsArray(arr2)) End
Le résultat de la première Msgbox
Le résultat de la deuxième msgbox
Sortie d'entrée de fichier c ++
# 4) Lbound
Il renvoie l'indice le plus bas du tableau spécifié comme argument de la fonction Lbound.
Syntaxe: LBound (ArrayName, (Dimension))
ArrayName est le nom du tableau.
Dimension est la valeur entière facultative, si le tableau a plusieurs dimensions, vous pouvez spécifier à quelle dimension vous souhaitez déterminer le Lbound.
Exemple:
Sub lboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim Arraywithoutlbound(10) Result1 = LBound(ArrayValue, 1) ' Returns 1. Result2 = LBound(ArrayValue, 3) ' Returns 10. Result3 = LBound(Arraywithoutlbound) MsgBox 'Lowest subscript in first array ' & Result1 & ' lowest subscript in 3rd array ' & Result2 & ' Lowest subscript in Arraywithoutlbound ' & Result3 End Sub
# 5) Ubound
Il renvoie l'indice supérieur du tableau spécifié comme argument dans la fonction Ubound.
Syntaxe: UBound (ArrayName, (Dimension))
ArrayName est le nom du tableau.
Dimension est la valeur entière facultative, si le tableau a plusieurs dimensions, vous pouvez spécifier la dimension à laquelle vous souhaitez déterminer l'Ubound.
Exemple:
Sub UboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim ArraywithoutUbound(10) Result1 = UBound(ArrayValue, 1) Result2 = UBound(ArrayValue, 3) Result3 = UBound(ArraywithoutUbound) MsgBox 'Lowest subscript in first array ' & Result1 & ' lowest subscript in 3rd array ' & Result2 & ' Lowest subscript in Arraywithoutlbound ' & Result3 End Sub
# 6) Split
Il renvoie un tableau avec un certain nombre de sous-chaînes dérivées de la chaîne entière donnée.
Syntaxe: Split (expression, (délimiteur, (limite, (comparer))))
- Expression: C'est la chaîne entière qui sera utilisée pour produire des sous-chaînes.
- Délimiteur: En utilisant le délimiteur spécifié, des sous-chaînes seront générées. Si cela n'est pas mentionné, l'espace est considéré comme le délimiteur.
- Limite: Nombre de sous-chaînes à renvoyer.
- Comparer: Une fois la sous-chaîne produite, vous pouvez utiliser différentes options de comparaison pour tester le résultat.
Exemple: Dans l'exemple ci-dessous, nous utilisons le délimiteur comme - et la limite comme 3.
Par conséquent, la fonction de fractionnement séparera la chaîne entière en sous-chaîne en fonction du délimiteur. Mais nous avons également mentionné la limite à 3 afin que les sous-chaînes ne soient pas formées après la limite 3. Ainsi, le dernier délimiteur - sera ignoré.
Sub splitExample() Dim MyString As String Dim Result() As String Dim DisplayText As String MyString = 'This is the example for-VBA-Split-Function' Result = Split(MyString, '-',3) MsgBox Result(0) & vbNewLine & Result(1) & vbNewLine & Result(2) & vbNewLine & Result(3) End Sub
# 7) Rejoindre
C'est juste l'inverse de la séparation, Join créera une chaîne en combinant plusieurs sous-chaînes.
Syntaxe: Join (sourcearray, (delimiter))
Sourcearray: Tableau unidimensionnel de chaînes que vous souhaitez joindre en une seule.
Délimiteur: Le délimiteur spécifié sera ajouté après chaque chaîne lors de la jonction.
Exemple:
Sub joinExample() Dim Result As String Dim dirarray(0 To 2) As String dirarray(0) = 'D:' dirarray(1) = 'SoftwareTestingHelp' dirarray(2) = 'Arrays' Result = Join(dirarray, '') MsgBox 'Date after joining ' & Result End Sub
Toutes les 3 valeurs sont jointes et est placé entre chaque mot, comme nous l'avons mentionné comme délimiteur.
# 8) Filtre
Le filtre nous permettra de rechercher une correspondance spécifiée dans un tableau. En fonction des critères de filtre, le sous-ensemble d'un tableau de chaînes sera renvoyé.
Syntaxe: Filter (sourcearray, match, (include, (compare)))
Exemple:
Sub filterExample() Dim Mystring As Variant Mystring = Array('Software Testing', 'Testing help', 'Software help') filterString = Filter(Mystring, 'help') MsgBox 'Found ' & UBound(Mystring) - LBound(Mystring) + 1 & ' words matching the criteria ' End Sub
Cet exemple recherchera le mot «aide» dans toute la chaîne du tableau en utilisant la fonction de filtre.
Questions fréquemment posées
Q # 1) Comment obtenir la longueur d'un tableau dans VBA?
Répondre: Pour obtenir la longueur d'un tableau, nous utilisons la fonction Ubound. Cette fonction nous donnera un indice supérieur d'un tableau spécifié.
Q # 2) Comment déclarer un tableau dans VBA?
Réponse: Un tableau à une dimension est déclaré comme indiqué ci-dessous.
Dim arrayname (Lowerbound To UpperBound) As DataType
Exemple: Dim Myarray (0 à 2) As Integer
Un tableau à deux dimensions est déclaré comme indiqué ci-dessous.
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) As DataType.
Exemple: Marques atténuées (1 à 3, 0 à 2) en tant qu'entier
Q # 3) Comment convertir Range en Array?
Répondre: Nous pouvons utiliser la fonction Transpose pour convertir la plage en tableau. Ce code créera Mys (10)
Sub Example() Dim Mys As Variant Mys = Application.Transpose(Range('A1:A10')) End Sub
Q # 4) Qu'est-ce qu'une variante de tableau dans VBA?
Répondre: Un tableau variant acceptera toutes sortes de types de données pour son index, c'est-à-dire que vous pouvez stocker différents types de valeurs dans un seul tableau.
Exemple:
Dim arrayData (3) As Variant
arrayData (0) = 'Vikas Vipal'
arrayData (1) = 411234567890 #
Q # 5) Qu'est-ce qu'une instruction de base d'options?
Répondre: Ceci est utilisé pour déclarer l'indice inférieur d'un tableau et est utilisé au démarrage d'un module. Par défaut, l'indice inférieur est 0 si vous déclarez Option Base 1 au niveau du module, alors pour tous les tableaux, l'indice inférieur par défaut sera 1.
Conclusion
Dans ce didacticiel, nous avons appris comment les tableaux sont utilisés dans VBA et nous avons vu en quoi les tableaux sont différents d'une variable régulière. Nous avons exploré des tableaux unidimensionnels et bidimensionnels avec des exemples. Nous avons également discuté des tableaux fixes et dynamiques.
Les moyens de redimensionner le tableau pendant l'exécution et de conserver les valeurs à l'aide de redim preserve ont été abordés avec des exemples. Enfin, nous avons appris les méthodes Array qui nous aideront à effectuer plusieurs opérations.
=> Vérifiez TOUS les didacticiels VBA ici
lecture recommandée
- Tutoriel Excel VBA - Introduction à VBA dans Excel
- Types de données VBA - Types de données numériques et non numériques dans VBA
- Variables VBA et option explicites dans VBA
- Inverser un tableau en Java - 3 méthodes avec des exemples
- Tutoriel Java Array Length avec des exemples de code
- Jagged Array In Java - Tutoriel avec des exemples
- Types de données de tableau - tableau int, tableau double, tableau de chaînes, etc.
- String Array C ++: implémentation et représentation avec des exemples