VBA - Array e listbox

reb_bl

Utente Standard
Professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
Software: .
Regione: .
#1
Ciao,
avrei bisogno di crearmi una sorta di tabella interna al Default.ivb con una lista di macchine con relativa descrizione, per poi richiamare da combolist e usare il numero della macchina. Questo serve perchè noi progettisti conosciamo le macchine per descrizione mentre gli altri per numero. Devo quindi creare una tabella in cui nella colonna 1 ci sia scritto "macchina 1" e nella colonna 2 "macchina pippo" in maniera tale che visivamente nella listbox io legga "macchina pippo" ma vada a scrivere "macchina 1".
Ho bisogno di una tabella esterna perchè ho più funzioni in cui richiamare il valore "macchina 1".
Non voglio usare applicativi esterni a meno che non ne sia strettamente costretto.

Qualcuno mi sa aiutare?
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#2

reb_bl

Utente Standard
Professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
Software: .
Regione: .
#3
Fretta non ne ho, nel senso che attualmente ho fatto un accrocchio.
Sono grossomodo nella stessa situazione del primo link, la tabella, in qualche modo da help di VBA l'ho fatta, e mi tocca riproporla in 4 (per adesso, in futuro forse più) occasioni.
Vorrei appunto in futuro andare a modificare un solo array, per problemi di gestione/lettura di dati.
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#4
Se ho capito il problema il mio approccio sarebbe un file esterno comune da cui attingono i vari programmi/macro che farai... In che senso devi "riproporla"? Poi una volta caricata in memoria in un array il problema diventa come fai il programma e quella è un'altra faccenda.
L'esempio postato usava excel, la stessa cosa funziona con un file .txt...
 

reb_bl

Utente Standard
Professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
Software: .
Regione: .
#5
Se ho capito il problema il mio approccio sarebbe un file esterno comune da cui attingono i vari programmi/macro che farai... In che senso devi "riproporla"? Poi una volta caricata in memoria in un array il problema diventa come fai il programma e quella è un'altra faccenda.
L'esempio postato usava excel, la stessa cosa funziona con un file .txt...
Non vorrei ricorrere ad un file esterno, più che altro per avere un unico file da smanettare in futuro, magari a far così appesantisco notevolmente il tutto?
In buona sostanza ho 4 combobox con menù a tendina che possono assumere 4 valori differenti: da incapace ho creato 4 combobox con all'interno di ogni funziono combo una lista.
Volevo migliorare il tutto.
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#6
Come detto tutto dipende da come hai fatto il programma... Puoi anche avere un unico array compilato all'interno del programma una volta e poi usare sempre quello per riempire i tuoi listbox ogni volta, starà a te se usare l'array come variabile globale o inventarti altri artifizi più eleganti...
 

reb_bl

Utente Standard
Professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
Software: .
Regione: .
#7
Come detto tutto dipende da come hai fatto il programma... Puoi anche avere un unico array compilato all'interno del programma una volta e poi usare sempre quello per riempire i tuoi listbox ogni volta, starà a te se usare l'array come variabile globale o inventarti altri artifizi più eleganti...
Vorrei proprio fare questo!
... ma non sono capace...:)
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#8
Spero tu sia più abile a pagare birre :p
Codice per VBA

Rich (BB code):
'Questa la metti nei vari Form che contengono la combobox, adattando i nomi di combobox e form
Private Sub Userform_Initialize()
    Call CompilaComboBox(myForm.ComboBox1)
End Sub

' Questa è una sub generale che compila sempre nello stesso modo il parametro combobox che viene passato
' da mettere in un modulo
Public Sub CompilaComboBox(myCombo As ComboBox)
    myCombo.AddItem ("Tizio")
    myCombo.AddItem ("Caio")
    myCombo.AddItem ("Sempronio")
End Sub
 
Ultima modifica:

reb_bl

Utente Standard
Professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
Software: .
Regione: .
#10
Rich (BB code):
'Questa la metti nei vari Form che contengono la combobox, adattando i nomi di combobox e form
Private Sub Userform_Initialize()
    Call CompilaComboBox(myForm.ComboBox1)
End Sub
Rich (BB code):
Probabilmente mi mancava sto passaggio, metto su un modulo ad hoc l'array?
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#11
La sub CompilaComboBox puoi metterla in un modulo qualsiasi, se faccio macro un po' elaborate di solito mi faccio un modulo apposito ma non è necessario; sarà disponibile in tutti i tuoi form/programmi (essendo public).
Invece la sub Userform_Initialize() è una sub "preimpostata" che va in esecuzione ogni volta il form che la contiene si avvia: quindi va copiata in ognuno dei tuoi form, e funzionerà solo per quel form specifico (essendo private).

Comunque:
a) non sono un programmatore e quindi posso sparare st..upidaggini.
b) la birra è per l'impegno e non per la qualità del supporto qualora rientrassimo nel caso a) ;)