Ripetere unoperazione combobox
Hai un problema con Excel? 
di mabolsie data: 04/02/2017 16:08:52
Ciao omonimo potresti usare il ciclo for x =1 to 100... bla... bla... bla next x però ti conviene allegare il file per testare le prove altrimenti rischiamo di sparare nel mucchio.
Ciao Max
di Massimo84 (utente non iscritto) data: 04/02/2017 18:02:17
Ciao mabolsie,
il ciclo for lo riesco a usare nelle altre operazioni ( nellle operazione con le celle non ho problemi ), ma non riesco a usarlo con le combobox.
Potresti farmi un esempio di ciclo con la funzione che ti ho fatto vedere io?
Grazie in anticipo
di alfrimpa data: 04/02/2017 18:31:12
Ciao Massimo ed un saluto a Max
Ma perchè mettere 100 combobox su un foglio quando ne puoi usare una sola che si posiziona sulla cella attiva?
L'origine dati della combo è sempre la stessa?
Allega un file di esempio spiegando quello che vuoi fare/ottenere.
Alfredo
di mabolsie data: 04/02/2017 20:32:45
...scusami non avevo capito che le combo erano direttamente sul foglio mi ero perso in un form.
Comunque i cicli sulle combo sui fogli non si possono fare.
Puoi fare come ha detto il nostro amico alfrimpa apri un form ci metti una combo e la gestisci comodamente con VBA.
Ciao Max
di Massimo84 (utente non iscritto) data: 05/02/2017 18:18:47
Ciao ragazzi,
le combobox le voglio gestire proprio da vba non sui fogli.
Ne ho tante (non saranno 100, era per dire) perchè le uso per ordini di magazzino ( articolo, colore, lunghezza, larghezza ecc )
L'origine dei dati è la stessa nel senso: 10 righe con altrettante combobox con gli stessi dati.
Mi sapete dare una dritta nel creare un ciclo su questa funzione:
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Or KeyCode = vbKeyReturn Then
If CBool(Shift And 1) Then
ComboBox1.Activate
Else
ComboBox2.Activate
End If
End If
End Sub
Grazie a tutti
|
di alfrimpa data: 05/02/2017 18:45:02
Massimo allega un file di esempio strutturalmente uguale all'originale con i dati con la spiegazione di quel che vuoi fare.
di Massimo84 (utente non iscritto) data: 06/02/2017 14:09:20
Ragazzi ho allegato un file.
Come notate posizionandovi all'interno della prima combobox e premendo tab vi spostate nella seconda combobox poi terza e via dicendo.
Per far ciò ho copiato la funzione che vi ho allegato prima per ogni spostamento.
Visto che dovrei inserire altre righe con combobox riusciamo a creare un ciclo per spostarci con tab dalla prima combobox all'ultima, senza dover scrivere la stessa funzione per ogni spostamento?
Grazie
di alfrimpa data: 06/02/2017 14:46:25
Ciao Massimo
Ti ho allegato un file dove ho adottato un approccio un po' diverso dal tuo in quanto utilizziamo un'unica combobox che segue il cursore ossia si sposta, di volta in volta, sulla cella attiva.
Ovviamente, come forse potrai capire dal codice, l'origine dati della combobox varia a seconda della colonna in cui si trova.
L'intervallo dove funziona tale meccanismo è A3:D1000 ma naturalmente si può impostare sul range che desideri.
Prova un po' e fai sapere.
Alfredo
P.S. Scusami il file corretto è Massimo84_1.xlsm (Massimo84 non va bene)
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1.Value
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
Dim nCol As Integer
If Not Intersect(Target, Range("a3:d1000")) Is Nothing Then
nCol = Target.Column
With ComboBox1
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height
Select Case nCol
Case Is = 1
.Clear
.AddItem "Bracciale"
.AddItem "Collana"
.AddItem "Gambale"
.AddItem "Ecc."
Case Is = 2
.Clear
.AddItem "Oro"
.AddItem "Argento"
.AddItem "Nero"
.AddItem "Bianco"
Case Is = 3
.Clear
.AddItem "10"
.AddItem "15"
.AddItem "20"
.AddItem "25"
Case Is = 4
.Clear
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End Select
End With
End If
End Sub
|
di Massimo84 (utente non iscritto) data: 06/02/2017 15:14:27
Ciao alfrimpa,
non va, funziona il completamento automatico ma non posso spostarmi con tab tra le varie combo devo usare per forza il mouse e mi viene più lento.
di alfrimpa data: 06/02/2017 15:38:55
Massimo prova con il nuovo file allegato (Massimo84_2.xlsm)
Dopo aver scelto la voce nella combo premi il tab.
Alfrddo
di Massimo84 (utente non iscritto) data: 06/02/2017 17:36:07
Alfrimpa ancora non va.
Sarebbe possibile creare un ciclo for x = 1 to ...... come diceva mabolsie sfruttando la funzione che ho allegato io?
di alfrimpa data: 06/02/2017 18:29:39
Massimo io un ciclo sulle combo non so crearlo (e non so neanche se sia possibile)
È per questo che ti ho proposto una soluzione alternativa e non capisco perché tu dica che non va.
Hai detto che ti vuoi muovere con il Tab e questo l'ho fatto; tu vuoi mettere tante combo (secondo me soluzione poco pratica) ed io te ne ho proposto una "che si muove".
Poi per scegliere una voce devi per forza usare il mouse.
Alfredo
di Massimo84 (utente non iscritto) data: 06/02/2017 18:37:03
Ciao Alfredo,
quello che volevo evitare era proprio usare il mouse.
Comunque se è così che deve andare allora va bene.
Ti posso chiedere un'ulteriore informazione.
Riesco a passare con TAB da combobox a cella vuota ( ad esempio premendo tab da combo1 a cella d2 ), ma non riesco a fare l'inverso, ovvero ritrovandomi in una cella prendiamo ad esempio la cella e2 poter passare alla combobox2 senza usare il mouse ma premendo tab.
Questo è possibile?
Ti allego la funzione
Grazie come sempre
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Or KeyCode = vbKeyReturn Then
If CBool(Shift And 1) Then
ComboBox1.Activate
Else
ActiveSheet.Range("D2").Activate
End If
End If
End Sub |
di alfrimpa data: 06/02/2017 19:18:01
Scusa ma mi dici come fai a selezionare una voce da una combo senza usare il mouse?.
Relativamente alla domanda tu vai alla cella perché c'è il codice inserito nella combo che ti ci fa andare; il contrario non credo sia possibile almeno per quel che so io.
Alfredo
di Massimo84 (utente non iscritto) data: 06/02/2017 19:29:47
Ciao Alfredo,
tramite la funzione qui sotto riesco a farlo, ovvero passo dalla cella e2 a combobox2 ma non riesco nemmeno a copiarla e sfruttarla più volte.
Dacci un'occhiata gentilmente per vedere dove sbaglio.
Ovviamente simulo la cella e2 vuota è una scorciatoia.
Grazie
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, Range("E2")) Is Nothing Then Exit Sub
ComboBox2.Activate
End Sub |
di alfrimpa data: 06/02/2017 20:03:50
Senti Massimo io una soluzione (secondo me valida) te l'ho data; se a te non piace me ne farò una ragione.
Spero che altri possano intervenire in tuo aiuto.
Alfredo
di Massimo84 (utente non iscritto) data: 08/02/2017 16:13:07
Ciao Alfredo,
hai ragione, troppo complicato seguire quella strada.
Ho risolto tutto con una semplice userform.
Un po più lenta ma più efficace.
Grazie ancora
Vuoi Approfondire?