Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Aggiornamento lista combobox in caso di inserimento dato non in elenco

Ultimo Aggiornamento: 18/01/2018 13:54
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 [SM=x423027]

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

Re:
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
[SM=x423061]

alfrimpa, 12/01/2018 10.47:

P.S. Ti avevo mandato una FFZ mail l'hai vista?




cos'è? [SM=x423039]


[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

Re: Re:
Chiara-ExcelForum, 12/01/2018 12.48:




cos'è? [SM=x423039]





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
[SM=x423021]
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

[SM=x423039]
Post: 848
Registrato il: 24/04/2004
Città: TERAMO
Età: 63
Utente Senior
2010
OFFLINE
14/01/2018 00:04

Re:
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
[SM=x423030]

Grazie moltissimo [SM=x423053]
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? [SM=x423042]

Grazie
Ciao
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 19:11. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com