View Full Version : [VBA] Combobox tra excel e VB
richileruar
28-02-2009, 07:22
Ciao a tutti, un problema che per voi sarà banale, mentre per me è in questo momento irrisolvibile da solo.
devo, da un foglio di excel inserire una combo che si riempi con dei dati del foglio di excel che si presentano in colonna. e questo è il primo problema!!!
il secondo è che una volta che seleziono una voce della combo,mi restituisca solo alcuni valori in celle che gli dico io(sempre in colonne).
purtroppo ho bisogno della spiegazione passo passo perchè sono un neofita di VB e di macro.
spero di essermi spiegato bene grazie:muro:
1. Rinominare Thread con [VBA] iniziale...
2. Primo quesito :
> Ad esempio :
ComboBox1.ListFillRange = "A1:A5"
;)
Per il resto spiega più precisamente cosa vuoi ottenere...
richileruar
28-02-2009, 14:49
ok ho capito, ma non so rinominare ll tread iniziale.
un volta creato l'elenco nella combobox, vorrei che ad ogni voce della combobox selezionata, in alcune celle venissero cambiati dei valori. naturalmente dovrò indicargli io quali valori mettere e dove metterli!!!
è possibile??
grazie ciao
Semplice. Basta usare l'evento Change() della ComboBox :
Private Sub ComboBox1_Change()
Prendi il valore selezionato ( ComboBox1.Text ) e ci fai quello che vuoi...
richileruar
28-02-2009, 19:58
perfetto grazie, ho scritto questo codice ma non so come indicargli le celle in cui deve andare a scrivere il valore
esempio del codice che stò facendo
ComboBox1.ListFillRange = "AF1:AF5"
If ComboBox1.Text = "ARCA" Then
cella AG6 = D2 "cioè la cella d2 deve diventare uguale ad AG6"
End If
grazie ciao
ComboBox1.ListFillRange = "AF1:AF5"
If ComboBox1.Text = "ARCA" Then
cella AG6 = D2
End If
No, non ci siamo.
Quel codice non può stare tutto assieme nella stessa routine.
ComboBox1.ListFillRange = "AF1:AF5" va messo da solo ( evento a scelta : apertura del WorkBook, selezione del Foglio, Pulsante, ecc... )
Poi sotto il Change della Combo...:
Private Sub ComboBox1_Change()
If ComboBox1.Text = "ARCA" Then
Range("AG6").FormulaR1C1 = Range("D2").Text
End If
End Sub
;)
richileruar
01-03-2009, 19:35
sono riuscito....
mi manca solo una cosa, come faccio ogni volta che apro il file excel a far tornare una voce della combo sempre uguale.
cioè tra cinque valori ipotizziamo (rete-campo-linee- selezionare la voce),
io vorrei che ad ogni apertura del file excel tornasse sempre la voce "selezionare la voce"
è fattibile??
grazie
Se mantieni la Combo in modalità "DropDownCombo" ( proprietà "Style" ), te la cavi con 2 righe di codice. Esempio ( nel Modulo "ThisWorkbook" ) :
Private Sub Workbook_Open()
Sheets("Foglio1").ComboBox1.ListFillRange = "Foglio1!A1:A5"
Sheets("Foglio1").ComboBox1.Text = "Selezionare la voce"
End Sub
Se invece volessi impedire all'utente di scrivere liberamente nella Combo ( Style = DropDownList ), dovrai usare un ciclo sulla colonna e poi aggiungere la voce "Selezionare la voce", oppure mantenere il ListFillRange ed aggiungere "Selezionare la voce" direttamente nel Foglio Excel... ;)
richileruar
04-03-2009, 22:47
GRZIE HO PROVATO CON LE DUE RIGHE DI CODICE MA MI RESTITUISCE QUESTO ERRORE
ERRORE DI RUNTIME 9 INDICE NON INCLUSO NELL'INTERVALLO.....
CIOè????
Quelle 2 righe sono corrette ( crea un file Excel di prova con una Combo, e mettici quel codice, vedrai che non solleva mai eccezioni ).
Il problema sta nel codice che hai legato al .Change della Combo, e forse ad altri eventi... Evidentemente cerca di impostare una cella con un indice non valido...
Cmq, ti ripeto che per usare quelle 2 righe la Combo deve tassativamente avere la proprietà Style = fmStyleDropDownCombo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.