Condividi:        

elenco in Userform Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

elenco in Userform Excel

Postdi vincenzoss » 03/07/10 17:31

Salve mi sono appena presentato nella apposita sezione.
Ora voglio chiedervi un consiglio, ho creato un “userform” in Excel, in quest’userform ho inserito una casella combinata.
In questa casella combinata dovranno essere elencati determinati cognomi, da reperire in un foglio Excel.
Poi vorrei che dopo aver selezionato il cognome da questa casella combinata, se è possibile copiare determinati dati (indirizzo, città, num. Tel. Etc.etc.) in delle caselle di testo sempre nello stesso userform.
Vi ringrazio in anticipo per le risposte.
Un saluto a tutti
vincenzoss
Newbie
 
Post: 5
Iscritto il: 03/07/10 17:21

Sponsor
 

Re: elenco in Userform Excel

Postdi Anthony47 » 03/07/10 22:16

Ciao vincenzoss e benvenuto nel forum.
Se permetti, ti stai complicando la vita, perche' quello che cerchi lo puoi fare gia' da excel:
-in una cella metti una "Convalida da Elenco" (Menu /Dati /Convalida, . . . ), come "Sorgente" inserisci l' area che contiene l' elenco dei cognomi, imposti un "messaggio di input" (comparira' quando selezioni la cella) e un messaggio di errore (comparira' se digiti un cognome non scelto dall' elenco), Ok
-una volta ottenuto il cognome userai Cerca.Vert per prelevare dalla tua anagrafica indirizzo, città, num. Tel e quant' altro disponibile.

Se proprio vuoi procedere con la userform, allora userai la proprietà List per assegnare i possibili valori al combobox, es: C_Box1.list=Range("A2:A22").Value e poi la WorkSheetFunction.VLookup sull' evento C_Box1_Exit per estrarre dall' anagrafica Indirizzo, Citta', etc e posizionarli nei vari TextBox.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: elenco in Userform Excel

Postdi vincenzoss » 05/07/10 11:31

Ciao Anthony47, grazie per la risposta, volevo utilizzare un userform, per rendere il programmino esteticamente più bello, ma mi sono reso conto che come dicevi tu mi complicavo la vita, e quindi ho seguito il tuo consiglio.
Però ora ho un'altro problema, ho creato un convalida dati con la lista dei clienti fissi, e con cerca.vert mi cerca tutte le info che voglio (come mi hai consigliato tu), ma il problema nasce quando invece dei clienti fissi, ci sono i clienti occasionali, a quel punto logicamente quando compilo il campo indirizzo,città, etc,etc mi si cancella la formula cerca.vert.
Quindi mi servirebbe un modo per far si che quando sono i clienti fissi, nei campi indirizzo, città, etc.etc. i dati sono inseriti tramite il convalida dati e cerca.vert, mentre quando sono i clienti occasionali, negli stessi campi indirizzo, città, etc.etc. i dati li devo inserire manualmente.
Quindi in conclusione nei campi dei dati, devo avere la possibilità di inserire i dati tramite un convalida dati e anche manualmente, senza compromettere la formula cerca.vert.
Non so se sono stato chiaro, (spero di si).
In attesa delle risposte vi ringrazio in anticipo.
Ciao a tutti.
vincenzoss
Newbie
 
Post: 5
Iscritto il: 03/07/10 17:21

Re: elenco in Userform Excel

Postdi Anthony47 » 05/07/10 17:17

volevo utilizzare un userform, per rendere il programmino esteticamente più bello, ma mi sono reso conto che come dicevi tu mi complicavo la vita, e quindi ho seguito il tuo consiglio.
Bravo; penserai all' estetica quando avrai un po' piu' di tempo da dedicare alla conoscenza del vba e delle form.

Per quanto riguarda il problema dei clienti occasionali, e' ovvio che se sulla formula scrivi un nome il gioco si rompe...

La mia opinione e' che se un cliente manca nell' anagrafica allora va inserito in anagrafica e poi va usato.
In alternativa, sopra la "userform povera" (quella che ti avevo suggerito e hai adottato) fatti un' area che userai per inserire i dati "occasionali" (ad esempio da M2 verso destra), e porta fuori dalla form la cella con il menu' a discesa (scelta di un cognome dall' anagrafica), ad esempio in L2.
Poi all' interno della form complicherai leggermente le formule:
-per il cognome
Codice: Seleziona tutto
=Se(M2<>"";M2;L2)

-per gli altri campi (esempio)
Codice: Seleziona tutto
=Se(M2<>"";N2;LaFormulaCercaVert)

In questo modo, se M2 non e' vuota, la form sara' compilata con i dati manuali scritti in M2, N2, O2, etc; altrimenti "comanda" la cella L2 col menu' a discesa.

Se con questo spunto non risolvi posta ancora indicando le formule che al momento usi

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: elenco in Userform Excel

Postdi maxmula » 06/07/10 11:24

Ciao vincenzoss, benvenuto.
Vedo che hai deciso di fare tutto da foglio di calcolo. In effetti è un argomento contro cui bisogna un po' "sbattere le corna" :)

Se, a cose fatte e risultati prodotti, decidessi di provare comunque ad "abbellire" il tuo foglio con un Userform, potrebbe forse esserti utile questo link:

http://www.dailydoseofexcel.com/archives/2004/05/10/populating-multi-column-listboxcombobox/

Ciao!
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: elenco in Userform Excel

Postdi vincenzoss » 06/07/10 14:30

Ciao, prima di procedere come mi consiglia Anthony47, vorrei provare in un altro modo; cioè in qesto modo:
In una cella ho scritto questa formula: =SE(E5<>"";CERCA.VERT(E5;'lista destinatari'!A4:F260;1;FALSO);"")
La cella E5 è quella che contiene il convalida dati con la lista destinatari, ora vorrei sapere come fare per far comparire il rislutato della formula cerca.vert presente in queso SE in un'altra cella.
Ho provato a scrivere la cella con il segno uguale davanti a cerca.vert ,=SE(E5<>"";B2=CERCA.VERT(E5;'lista destinatari'!A4:F260;1;FALSO);""), ma non mi funziona.
Come si fa? si puo fare?
Grazie a tutti e ciao
vincenzoss
Newbie
 
Post: 5
Iscritto il: 03/07/10 17:21

Re: elenco in Userform Excel

Postdi maxmula » 06/07/10 15:28

Da una formula non puoi impostare il valore di un'altra cella, a meno di non ricorrere ad una function scritta (da te) in VBA.
Quindi la tua formula (ad esempio in F19) dovrebbe diventare:

Codice: Seleziona tutto
    =SE(E5<>"";CERCA.VERT(E5;'lista destinatari'!A4:F260;1;FALSO);"")


Questa formula restituisce il nome del destinatario se questo esiste nella lista (altrimenti il risultato è #N/D).
Per avere quello che cerchi, puoi impostare l'altra cella in modo che restituisca il contenuto di E5, qualora questo sia valido. Ti basta scrivere questa formula:

Codice: Seleziona tutto
    =SE(VAL.ERRORE(F19)=FALSO;F19;"")




Altra strada:
se il tuo foglio con la verifica dei destinatari contiene anche gli indirizzi (ad esempio nella colonna a fianco ai nominativi), puoi usare Cerca.Vert per farti restituire direttamente l'indirizzo della persona cercata: basta specificare una matrice di ricerca "allargata" (in modo che includa anche la seconda colonna) e che vuoi il risultato da colonna 2 anziché 1 ;)
Codice: Seleziona tutto
    =SE(E5<>"";CERCA.VERT(E5;'lista destinatari'!A4:F260;2;FALSO);"")


HTH...

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: elenco in Userform Excel

Postdi maxmula » 06/07/10 15:37

maxmula ha scritto:basta specificare una matrice di ricerca "allargata" (in modo che includa anche la seconda colonna) e


Scusate, mi auto-cito...
La frase qui sopra appartiene ad una versione provvisoria del mio post e va pertanto ignorata!
Purtroppo un'amica mi ha distratto... Dannata chat di Gmail! :P

MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: elenco in Userform Excel

Postdi vincenzoss » 07/07/10 15:57

Salve, il problema l'ho risolto con una creazione di una Macro, ma ora ho un'altro problema,
ho bisogno di copiare il contenuto di una cella (dove all'interno c'è la formula cerca.vert) nella prima cella vuota di un altro foglio.
Utilizzando questo codice:
Public Sub Tester2()
Dim WB As Workbook
Dim SH As Worksheet
Dim DH As Worksheet
Dim rng As Range
Dim NextCell As Range

Set WB = ActiveWorkbook
Set SH = WB.Sheets("accettazione")
Set rng = SH.Range("M7")
Set DH = WB.Sheets("archivio")
Set NextCell = DH.Cells(Rows.Count, "A").End(xlUp)(2)

rng.Copy Destination:=NextCell

End Sub
mi copia nella prima cella vuota della riga A del foglio archivio solo la formula della cella m7 del foglio accettazione.
Quindi mi esce solo la formula senza il volore, a me serve il valore, non la formula.
Come posso fare?
Grazie in anticipo e ciao
vincenzoss
Newbie
 
Post: 5
Iscritto il: 03/07/10 17:21

Re: elenco in Userform Excel

Postdi Anthony47 » 09/07/10 15:09

Questa domanda era rimasta abbandonata...
Invece di rng.Copy Destination:=NextCell, usa
Codice: Seleziona tutto
rng.Copy
NextCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Certo che ti sei voluto complicare la vita con quei Dim e quei Set; in effetti la macro complessiva e'
Codice: Seleziona tutto
Sub Tester3()
Sheets("accettazione").Range("M7").Copy
Sheets("Archivio").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


Non voglio diminuire l' utilita' della Dim, o la flessibilita' che il Set consente, ma quando se ne puo' fare a meno ne faccio a meno.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "elenco in Userform Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 76 ospiti