2015-02-19 5 views
6

sperando che ci un breve risposta a questa domanda ....Array Popola VBA con elenco di valori in codice nativo

Ho un allineamento e voglio popolarlo con una lista di argomenti.

Sub EasyArrayInput() 
Dim myArr() as variant 
myArr = ("string1", "string2", "string3") 
End Sub 

Sono ben consapevole di come scorrere e popolare con un per/successivo o fare/mentre, ma sarebbe bello essere in grado di compilare una matrice quando i valori non cambierà senza l'utilizzo di un metodo hardcoded .

Sub UsualMethodThatIDontWantToDo() 
Dim myArr(1 to 3) as variant 
myArr(1) = "string1" 
myArr(2) = "string2" 
myArr(3) = "string3" 
End Sub 

Esiste comunque un metodo simile al primo snippet di codice? Preferirei farlo in quel modo. Mi scuso se questa domanda è stata posta/risposta, ma non sono abbastanza sicuro di quale sia il metodo che sto chiedendo.

Grazie in anticipo!

Edit: Soluzione

Il frammento di codice di seguito (dal link che chancea inviato) creerà una matrice che è una variante e farmi ridare quello che volevo.

Sub EasyArrayInput() 
Dim myArr() as variant 
myArr = Array("string1", "string2", "string3") 
End Sub 

Il codice successivo frammento sembra essere utile per se avete solo le stringhe e non si desidera inizializzare una variante:

Sub EasyArrayInput() 
Dim myArr() as String 
myArr = Split("String1,String2,String3", ",") 
End Sub 
+2

Questo è un duplicato di http://stackoverflow.com/questions/19369132/declare-and-initialize-string-array-in-vba – chancea

+0

Non è proprio la stessa di quella domanda. – Rory

+0

Grazie chancea, non ero abbastanza sicuro di cosa avessi bisogno di cercare ma ho trovato la soluzione dal tuo link. Ho aggiunto la soluzione nella mia domanda. Apprezzo davvero la rapidità con cui sei stato in grado di aiutarti! – JSS

risposta

2

Supponendo di avere una sorta di sequenza numerica, si può fare qualcosa di simile:

Dim myArray() 
myArray = [TRANSPOSE(INDEX("string"&ROW(1:10),))] 

ma francamente penso che un ciclo è più chiaro.

+0

Funzionerebbe e lo userei, ma il codice che sto scrivendo verrà trasferito dalla cartella di lavoro alla cartella di lavoro con diversi ambiti/fogli. Apprezzo il tuo aiuto! – JSS

+0

Non sono sicuro di vedere la pertinenza, ma OK. – Rory

3

Che ne dici?

Sub EasyArrayInput() 
    Dim myArr() As Variant 

    myArr = Array("string1", "string2", "string3") 
End Sub 
+0

Questo fa il trucco. Grazie per l'aiuto! – JSS