1
votes

Comment déclarer un tableau global dans un formulaire?

Comment déclarer un tableau global dans un formulaire?
J'ai besoin que le tableau soit rempli dans une procédure et lu dans une autre procédure.
Avec le code actuel à la ligne 1 de FillArray_1

Dim array1() As String                  ' Array

Private Sub Exe_btn_Click()
    PrintArray
End Sub

Public Sub FillArray_1()
    array1 = Array( _
                               "member_1", _
                               "member_2", _
                               "member_3")
End Sub

Public Sub PrintArray()
    FillArray_1                   

    Dim i As Integer

    For i = LBound(array1) To UBound(array1)
                Debug.Print array1(i)
    Next i
End Sub

J'obtiens un message d'erreur:

Expected variable or procedure, not project

Code:

array1 = Array( ...


1 commentaires

L'utilisation de variables entières ne présente généralement aucun avantage


3 Réponses :


1
votes

Not Dim mais Public:

Public array1() As String 

et il ne peut pas être localisé dans le module du formulaire Déplacez-le dans un module de code.


1 commentaires

Oui. Il doit être accessible tout le temps, alors déplacez-le vers un module de code.



1
votes

Et pour remplir array1 avec la fonction Array () , vous devez le déclarer comme Variant .

Public array1 As Variant

ou

Dim array1 As Variant

si ces fonctions sont dans des modules différents.


0 commentaires

2
votes

Comme l'indique le message d'erreur, Array est le nom de votre projet! Renommez le projet ou vous devez utiliser VBA.Array pour éviter ce conflit:

Public Sub FillArray_1()
    array1 = VBA.Array( _
                               "member_1", _
                               "member_2", _
                               "member_3")
End Sub


1 commentaires

Très belle prise!