| | Post: 42 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
12/01/2018 10:21 | |
Ciao, avrei l'esigenza di aggiornare con Userform attiva, l'elenco dei dati visualizzati con la combobox in caso in cui inserisca un nuovo dato non in elenco
Al codice
If Not rng Is Nothing Then
'Application.Goto Rng, True
Else
risp = MsgBox("Voce non trovata" & Chr(10) & "Vuoi aggiungerla?", vbYesNo)
Select Case risp
Case vbYes
ur = Sheets("elenchi").Cells(Rows.Count, "b").End(xlUp).row
Sheets("elenchi").Cells(ur + 1, "b").Value = ComboBox1.Value
(creato da un utente del Forum ), ho cercato di adattare un esempio trovato in una discussione del Forum
Dim Riga As Long (se ho capito bene, viene dichiarata una variabile Long perchè permette di inserire numeri contenuti in un intervallo troppo grande rispetto ad Integer.non capisco perchè usare Long se io devo inserire delle parole e non numeri)
Riga = ActiveCell.Row (viene individuata la riga selezionata)
ComboBox1.Value = "" (la cella a cui si riferisce la combobox è vuota)
Cells(Riga, 1) = TextBox1.Value (viene copiato il dato visualizzato nella TextBox nella riga selezionata)
Ho inserito nel codice delle spiegazioni tra () non con l'intenzione di "insegnare" a voi (figuriamoci se io posso spiegare a voi qualcosa di cui non so nulla) ma al contrario, per dimostrarvi che ho cercato di comprendere il significato del codice, anche se con scarsi risultati
|
|
| | Post: 3.620 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
12/01/2018 10:47 | |
Scusa Chiara ma in cosa differisce questa tua nuova richiesta cin quella che avevamo già in corso?
Non è la stessa cosa?
P.S. Ti avevo mandato una FFZ mail l'hai vista?
Alfredo |
| | Post: 844 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
12/01/2018 12:20 | |
Ciao a tutti.
Spero di aver capito bene l'esigenza: vuoi aggiornare l'elenco visualizzato dalla ComboBox nel caso si inserisca un valore non presente in Elenco.
Riguardo al secondo codice che hai allegato, non mi sembra c'entri nulla con quello che vuoi fare.
A proposito di questo commento Dim Riga As Long (se ho capito bene, viene dichiarata una variabile Long perchè permette di inserire numeri contenuti in un intervallo troppo grande rispetto ad Integer.non capisco perchè usare Long se io devo inserire delle parole e non numeri)
Riga = ActiveCell.Row (viene individuata la riga selezionata) La variabile è Long perchè deve contenere il Numero di Riga della cella interessata, non il suo valore.
=========================================================
=========================================================
Per inserire un dato non presente nella Combobox, ti conviene usare una subroutine a parte che puoi usare per tutte e quattro le combo.
La routine va inserita nel modulo della userform
Private Sub AggiornaCombo(Combo As Object)
Dim C As Long
With Combo
For C = 0 To .ListCount - 1
If .List(C) = .Text Then Exit Sub 'se il valore è gia in lista non aggiunge nulla
Next C
.AddItem .Text 'aggiunge alla lista il valore inserito nella Combo
End With
End Sub Questo è AfterUpdate per combobox 1 Private Sub ComboBox1_AfterUpdate()
Dim risp As Integer
Dim ur As Long
Dim rng As Range
With Sheets("Elenchi").Range("b:b")
Set rng = .Find(What:=ComboBox1.Value, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not rng Is Nothing Then
'Application.Goto Rng, True
Else
'il Select Case non serve, i casi sono solo due
If MsgBox("Voce non trovata" & Chr(10) & "Vuoi aggiungerla?", vbYesNo) = vbYes Then
ur = Sheets("elenchi").Cells(Rows.Count, "b").End(xlUp).Row
Sheets("elenchi").Cells(ur + 1, "b").Value = ComboBox1.Value
AggiornaCombo ComboBox1 '<<======== inserisce il nuovo dato nell'elenco
Else
Me.ComboBox1.Value = ""
' Exit Sub 'questo non serve
End If
End If
End With
End Sub [Modificato da Zer0kelvin 12/01/2018 12:26] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 42 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
12/01/2018 12:48 | |
alfrimpa, 12/01/2018 10.47:
Scusa Chiara ma in cosa differisce questa tua nuova richiesta cin quella che avevamo già in corso?
Non è la stessa cosa?
Ciao Alfrimpa, credevo che dovendo fare una nuova domanda, dovessi aprire una nuova discussione per rendere maggiormente visibile l'argomento
alfrimpa, 12/01/2018 10.47:
P.S. Ti avevo mandato una FFZ mail l'hai vista?
cos'è?
[Modificato da Chiara-ExcelForum 12/01/2018 12:48] |
| | Post: 43 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
12/01/2018 12:50 | |
Grazie anche a te Zer0kelvin..
ho...(o almeno credo) inserito il codice nel modulo della Userform ma mi dà un errore
Allego il file
Grazie [Modificato da Chiara-ExcelForum 12/01/2018 12:51] |
| | Post: 3.621 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
12/01/2018 14:24 | |
Chiara-ExcelForum, 12/01/2018 12.48:
cos'è?
Ti avevo semplicemente inviato un messaggio privato per chiederti delle cose sulla discussione che avevamo in precedenza in corso.
Per vederlo devi andare nella Home Page del forum e in alto a destra trovi il pulsante E-mail; cliccaci su e lo vedrai.
Comunque avresti dovuto ricevere anche una mail sul tuo account di posta che ti notificava l'invio.
Alfredo |
| | Post: 44 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
12/01/2018 14:38 | |
Vado subito a vedere... via email non ho ricevuto nulla. Eppure ricevo le notifiche del Forum. Magari è finita nello Spam
|
| | Post: 845 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
12/01/2018 17:53 | |
Per inserire un dato non presente nella Combobox, ti conviene usare una subroutine a parte che puoi usare per tutte e quattro le combo.
La routine va inserita nel modulo della userform
Fai più attenzione a quello che leggi; il modulo della Userform è quello dove si trova il codice dei controlli (come AfterUpdate).
Comunque, visto che ormai l'hai inserita in un modulo standard, sostituisci
Private Sub AggiornaCombo(Combo As Object)
con
Public Sub AggiornaCombo(Combo As Object)
Riguardo alla mail FFZ di alfrimpa, non si tratta di una email vera e propria, ma della messaggitica interna del forum.
Dovresti poterlo leggere cliccando sul pulsante EMAIL del forum, a inizio pagina, a destra. [Modificato da Zer0kelvin 12/01/2018 17:57] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 47 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
13/01/2018 17:42 | |
Abbi pazienza ma proprio non capisco
Dove devo inserire il codice? L'ho inserito nel foglio che s'è aperto cliccando su Form - Visualizza codice ma non funziona
|
| | Post: 848 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
14/01/2018 00:04 | |
Chiara-ExcelForum, 13/01/2018 17.42:
Abbi pazienza ma proprio non capisco
Dove devo inserire il codice? L'ho inserito nel foglio che s'è aperto cliccando su Form - Visualizza codice ma non funziona
Cosa non funziona?
Quando non funziona?
Cosa dovrebbe fare il codice e cosa non fa?
Ti da errore?
Se sì devi specificare il tipo di errore e dove si verifica cliccando su Debug.
Non ho la palla di cristallo.
Il codice per aggiungere la voce alla listbox funziona correttamente.
[Modificato da Zer0kelvin 14/01/2018 00:06] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 48 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
14/01/2018 10:19 | |
In effetti funziona.... ora che ho capito dove dovevo copiare il codice grazie al tuo esempio
Grazie moltissimo |
| | Post: 52 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
18/01/2018 13:54 | |
Ciao,nell'accodarmi a questa discussione spero di non commettere una violazione del regolamento
Ho in effetti letto in molti Forum che il Moderatore "bacchetta" l'utente perchè continua una discussione piuttosto di crearne una nuova. Dal momento che proseguo con lo stesso argomento, ho ripresto da dove m'ero fermata
Chiusa questa parentesi, vi chiederei un aiuto in quanto non riesco più a far funzionare correttamente il codice "aggiorna Combobox" consigliatomi nel forum
La cosa strana è che ha funzionato per qualche giorno, poi (non escludo di aver inavvertitamente effettuato qualche modifica nel codice) ha smesso di funzionare
Per non "sapere nè leggere nè scrivere" ho sostituito il codice consigliato con quello nel mio xls ma nulla da fare... cosa sarà successo?
Grazie
Ciao |
|
|