Come utilizzare una variabile
Hai un problema con Excel? 
Come utilizzare una variabile
di p.pasquali111 data: 05/11/2012 11:46:36
Salve a tutti, scusate la superficialità del titolo ma non so come spiegarlo meglio...
So che ad una variabile è possibile assegnarle un num di riferimento e il relativo valore, ad esempio alla variabile Barra(SezioneBarra) posso assegnare un valore per ogni variazione di SezioneBarra se opportunatamente dichiarato.
Il mio problema è che non devo semplicemente assegnare a SezioneBarra solo dei numeri, ma mi occorre assegnarle del testo.
Per capirci volevo fare una cosa del tipo:
Dim Barra(500) As Variant
sub prova1()
SezioneBarra = "14x20"
Barra(SezioneBarra) = "ciao"
end sub
ma ovviamente mi da errore. Sapete mica come posso ovviare a questo intoppo??
Grazie molte a tutti!!
Dim Barra(500) As Variant
sub prova1()
SezioneBarra = "14x20"
Barra(SezioneBarra) = "ciao"
end sub |
di Vecchio Frac (utente non iscritto) data: 05/11/2012 14:13:00
C'è qualche piccola confusione concettuale che spero di aiutarti a chiarire. A volte la terminologia corretta aiuta sia ad inquadrare il problema che a risolverlo, direi in ogni campo di qualunque scienza.
cit. " ad una variabile è possibile assegnarle un num di riferimento e il relativo valore "
---> una variabile, di un certo tipo (ad es, stringa o numero) può essere opportunamente dimensionata, cioè è possibile assegnarle uno spazio in memoria affinchè ci si possa riferire a quella variabile con quello stesso nome, indicizzandola per distinguere i suoi elementi. E' come avere una scatola (la variabile) suddivisa in tanti scomparti (gli indici), e avere un elemento in ogni scomparto. Nella variabile così creata (che si chiama adesso "array" o "vettore") il primo elemento ha valore zero (se non viene diversamente specificato con apposita istruzione Option Base).
cit. " non devo semplicemente assegnare a SezioneBarra solo dei numeri, ma mi occorre assegnarle del testo."
---> questo dipende solo dal tipo di dato che deve possedere la variabile. La dichiarazione del tipo di dato si fa con l'istruzione Dim variabile() As ...
cit. " ma ovviamente mi da errore"
---> sì, perchè gli indici possono essere solo numerici.
In alternativa ad un array puoi utilizzare un oggetto di tipo Collection che supporta l'indicizzazione alfabetica; una Collection ha degli elementi organizzati come un array (quindi gli elementi possono essere rintracciati dalla loro posizione numerica) ma possiedono una chiave (key) associata agli elementi che può (deve) essere di tipo testo.
Volendo utilizzare semplici Array, puoi risolvere il tuo problema con un array a due dimensioni, in cui la prima contiene un valore numerico e la seconda un valore di tipo testo:
Dim Barra(500, 1) As String
In questo modo hai una variabile Barra che può contenere fino a 501 elementi nella prima dimensione e fino a due elementi nella seconda (si parte da zero!). I valori numerici vengono memorizzati come testo ma possono essere riconvertiti con Val() o lasciare che sia VBA a fare le conversioni implicite.
sub prova1()
Dim Barra(500, 1) As String
SezioneBarra = "14x20"
Barra(0, 0) = 1
Barra(0, 1) = SezioneBarra
end sub
Per il tuo caso però io preferirei una soluzione con Collection.
Intanto digerisci queste nozioni, poi eventualmente ne riparliamo :)
Vuoi Approfondire?