Le problème de l'aujourd'hui est donc de me faire fou, car cela devrait être facile et je ne peux pas trouver la réponse:
Comment déclarer une matrice publique dans VBA? J'utilise un tableau avec les lettres A, B, C, ... parce que je travaille avec des cellules Excel, et je ne veux pas le déclarer dans chaque fonction que je crée, non?
J'ai essayé de regarder sur le Web en premier et j'ai lu que vous devez le déclarer dans un module différent, c'est ce que j'ai fait: p> mais visual basique ne l'aime pas ... p> Alors, que dois-je faire? P> Merci beaucoup :) P> Edit: Le problème concerne plus d'asignation des valeurs à le tableau que de le déclarer p> p>
7 Réponses :
Essayez ceci: Malheureusement, le code trouvé en ligne était vb.net non VBA. p> p>
Déclarez le tableau en tant que global de l'ensemble des sous-ministres dans une application:
Sub DisplayArray(Name As String, ParamArray Arr() As Variant)
Dim i As Integer
For i = 0 To UBound(Arr())
MsgBox Name & ": " & Arr(i)
Next i
End Sub
La première ligne de l'exemple 1 donne une erreur de compilation très gênante dans Access 2007.
J'ai copié le même code à VBA pour le tester. Pour ce faire, je reçois une erreur de compilation. Tout en soulignant le "A" dans le tableau à citer, il est indiqué que cela n'est pas autorisé en dehors d'une procédure. Toute astuce?
Oui, je ne sais pas pourquoi cette réponse est la plus précipitée telle qu'elle est fausse. Vous ne pouvez pas modifier un tableau en dehors d'un sous-niveau. Au fur et à mesure que d'autres réponses signalent, vous devez créer un sous-produit qui le modifie ou la modifier avec workbook_open () code> ou similaire.
Les 2 premières lignes donnent un problème suivant (à cause d'une citation unique 'Je pense): Erreur de compilation (Erreur de compilation) Assist: Expression (en attente de: expression) Changer de guillemets Donnez une erreur de compilation lorsque Lauching the Code: Instruction incorrète à à l' Exérieur d'une procédre. (Instruction incorrecte en dehors d'une procédure)
Vous utilisez le mauvais type. La fonction Ainsi, dans la section de déclaration de votre module ( Il n'a pas besoin d'être un module différent!), vous définissez p> et quelque part au début de votre code de programme (par exemple, dans le document une autre alternative (simple) serait de créer une fonction qui renvoie la matrice, par exemple quelque chose comme p> Ceci a l'avantage de ne pas avoir besoin d'initialiser la variable globale et l'inconvénient que le tableau est créé à nouveau sur chaque appel de fonction. P> < / p> (...) code> La fonction renvoie un variante code>, pas une chaîne code>. workbook_open code> événement) Vous l'initialisez avec p>
Cela a fonctionné pour moi, semble fonctionner comme global: et peut l'appeler de chaque sous, par exemple obtenir un premier élément: P>
Option Explicit
Public myarray (1 To 10)
Public Count As Integer
myarray(1) = "A"
myarray(2) = "B"
myarray(3) = "C"
myarray(4) = "D"
myarray(5) = "E"
myarray(6) = "F"
myarray(7) = "G"
myarray(8) = "H"
myarray(9) = "I"
myarray(10) = "J"
Private Function unwrapArray()
For Count = 1 to UBound(myarray)
MsgBox "Letters of the Alphabet : " & myarray(Count)
Next
End Function
Cela ne fonctionnera pas - vous ne pouvez pas modifier les éléments de tableau en dehors d'une fonction ou d'un sous-niveau. Vous obtiendrez une erreur de compilation à la ligne 4.
Eh bien, fondamentalement, ce que j'ai trouvé, c'est que vous pouvez déclarer le tableau, mais lorsque vous l'avez défini, VBA vous montre une erreur.
Donc, je mets un sous spécial pour déclarer des variables et des tableaux mondiaux, quelque chose comme: P > et chaque fois que je veux utiliser la matrice, j'appelle le sous-premier, juste au cas où P> call set_values
Msgbox example(5)
Option Explicit
Public colHeader
Sub test()
ReDim colHeader(11)
colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L")
End Sub
Sub verify_test()
Dim i As Integer
For i = LBound(colHeader) To UBound(colHeader)
MsgBox "colHeader( " & i & " ) = " & colHeader(i)
Next
End Sub