Giorgio sta creando una macro e deve riempire un intervallo di celle con dei valori. Ad esempio, nel caso avesse bisogno di riempire l’intervallo A1:C1, al momento sono necessarie tre istruzioni per riempire quell’intervallo:
Range("A1") = "Test1"
Range("B1") = "Test2"
Range("C1") = "Test3"
Si chiede se c’è un modo per inserirli in un’unica dichiarazione, simile alla seguente:
Range("A1:C1") = ("Test1","Test2","Test3")
La sintassi desiderata di Giorgio è vicino all’essere corretta, ma così com’è non funzionerà. Ecco come funzionerà:
Range("A1:C1") = Array("Test1","Test2","Test3")
Si noti l’uso dell’istruzione Array, che indica a VBA che quanto segue deve essere considerato una sequenza di valori da utilizzare nella sequenza di celle a sinistra dell’operatore. È interessante notare che puoi inserire i valori nelle variabili e utilizzare comunque l’istruzione Array, come mostrato qui:
sOne = "Mele"
sTwo = "Arance"
sThree = "Carciofi"
Range("A1:C1") = Array(sOne, sTwo, sThree)
Puoi anche lavorare con variabili dirette, se preferisci:
Dim sMyStrings(2) As String
sMyStrings(0) = "Mele"
sMyStrings(1) = "Arance"
sMyStrings(2) = "Carciofi"
Range("A1:C1") = sMyStrings
Il codice di cui sopra potrebbe anche essere riscritto, come segue:
Dim sMyStrings(2) As String
sMyStrings = Array("Mele", "Arance", "Carciofi")
Range("A1:C1") = sMyStrings
Infine, se si desidera posizionare i valori in una singola colonna anziché in una riga, è necessario utilizzare la funzione Transpose, in questo modo:
Range("A1:A3") = Application.Transpose(Array("Test1","Test2","Test3"))