2009-12-06 4 views
1

Mon VBA Excel prend ~ 300 fichiers XLS et saisit 8 cellules à déposer dans leur propre ligne. (Office11) J'ai plusieurs sous-marins et fonctions qui utilisent des constantes de localisation pour les emplacements sourceData et de destination. Grand Total J'ai 23 emplacements constants avec des numéros de colonnes, des emplacements de cellules. Question: Des suggestions sur la façon de nettoyer cela pour plus de lisibilité et de garder les constantes en un seul endroit? J'essayais d'éviter les variables publiques mais pas sûr d'une meilleure méthode. Comment faites-vous des tableaux contenant des valeurs constantes?VBA Utilisation propre de nombreuses constantes

exemple partiel,
Public pstrQLocations(1 To 8) As String
pstrQLocations(1) = "B7"
pstrQLocations(2) = "B6"
pstrQLocations(3) = "B5"
pstrQLocations(4) = "B8"
pstrQLocations(5) = "A3"
pstrQLocations(6) = "C8"

+3

Ce ne serait pas un cas d'utilisation pour les plages nommées? –

+0

Comment les plages nommées fonctionneraient-elles à la fois pour les classeurs de destination (plusieurs sources) et de destination unique? Le classeur Destination contient le code VBA. – ExcelCyclist

+0

Cela a du sens pour thisWorkbook (avec le code VBA) en utilisant ce qui suit. Cependant, cela semble illogique d'utiliser des plages nommées pour 300 fichiers externes. ThisWorkbook.Names.Add Nom: = "SomeName", _ RefersTo: = Feuilles de travail ("Sheet2"). Range ("A1: A10") – ExcelCyclist

Répondre

1

Vous pouvez stocker vos Constantes dans un Collection. L'avantage est que vous pouvez donner des noms à vos éléments.

Option Explicit 
Dim pstrQLocations As Collection 

Private Sub initializeConstants() 
    Set pstrQLocations = New Collection 

    pstrQLocations.Add "B7", "Title" 
    pstrQLocations.Add "B6", "User" 
End Sub 

Private Sub showConstants() 
    initializeConstants 
    Debug.Print Me.Range(pstrQLocations("Title")).Value 
    Debug.Print Me.Range(pstrQLocations("User")).Value 
End Sub 

Version 3D:

Option Explicit 
Dim pstrQLocations As Collection 

Private Sub initializeConstants() 
    Dim title As New Collection 

    Set pstrQLocations = New Collection 

    title.Add "B7", "source" 
    title.Add "A6", "destination" 

    pstrQLocations.Add title, "Title" 
End Sub 

Private Sub showConstants() 
    Dim y As Collection 
    initializeConstants 

    Debug.Print pstrQLocations("Title")("source") 
    Debug.Print pstrQLocations("Title")("destination") 
End Sub 
+0

Merci, puis-je faire cette Collection 3D? c'est-à-dire * .Ajouter "B7", "Titre", "A6" afin qu'il me permet de stocker [emplacement source, nom, emplacement de destination] – ExcelCyclist

+0

J'ai ajouté une version 3D et corrigé le 2D. – marg

Questions connexes