creare userform



  • creare userform
    di cristian (utente non iscritto) data: 16/04/2013 23:22:01

    ciao a tutti
    volevo un consiglio, ho creato una userform con 4 campi di cui 3 con combobox e 1 con textbox, i dati che vengono inseriti nella userform vanno inseriti in rispettive 4 celle A2-B2-C2-D2 del foglio "scheda".
    per le combobox i dati vengono presi dal foglio elenco rispettivamente dato1 - dato2 - dato3 - dato4,
    nella combobox1 che prende il dato1 visualizza le voci in elenco 1 ma trascrive le voci di elenco2 nella cella A2 , si può fare?
    io non ci stò capendo più niente.
    allego il file
    grazie a tutti della disponibilità.



  • di michela (utente non iscritto) data: 17/04/2013 09:27:13

    Ciao, cristian..........ho provato a lavorare sul tuo file.........e mi è sembrato e mi sembra che abbia funzionato..........solo ad un certo punto ho visto che forse puoi mettere - invece di una textbox - un'altra combobox, forse è più semplice......ho cercato di far funzionare il Command per Copiare i Dati come vuoi tu e dove li vuoi tu.......ed anche ho cercato di far funzionare il Command "Pulisci i Campi", per far in modo, appunto, di ripulire i campi.
    Prova e fa sapere come va, se ti trovi o meno.
    Michela



  • di totygno71 data: 17/04/2013 09:47:21

    CCiHo pravoto anghe io...



  • di totygno71 data: 17/04/2013 09:56:17

    @Michela

    credo anche io che la quarta comboboix sia meglio infatti l'ho messa anche io_
    Facendo la prova col tuo file però noto che
    inserisce i dati solo la prima volta nella riga2
    inserisce i valori delle combobox anziche delle rispettive celle dell'elenco 1 ed elenco3
    pulisci campi non funzia perche anziche resettare le combo resetta il range A2:D2

    Anche tutte queste macro...
    aggiungerei almeno un scrreupdating falso per ecitare lo sfarfallio
    ciao



  • di totygno71 data: 17/04/2013 10:01:08

    @ Michela
    Ho guardato anche nel codice...
    ma copia sempre gli stessi valori senza tener conto dei valori inseriti dalle combo ^_^ che figata!



  • di cristian (utente non iscritto) data: 17/04/2013 17:19:42

    grazie dell'aiuto, le stò provando....
    io adesso la devo inserire in un'altra macro che poi fa delle ricerche partendo dai dati riportati nelle celle A2 B2 C2 D2.
    ho dovuto spostare da colonna D a colonna H gli elenchi, e sono anche molto più lunghi, nella userform di totygno71 dove devrei andare a modificare?
    grazie ancora della disponibilità.




  • di cristian (utente non iscritto) data: 17/04/2013 19:41:53

    ciao totygno71 mi sembra di aver capito come riindirizzare gli elenchi, ho agito sulle proprietà della combobox (giusto?).

    se volessi che anche la seconda combobox fosse come la prima , cioè che in elenco si vede una dicitura e inserisce in cella quello che c'è a fianco (si vede ottimo e si inserisce ott)?
    poi siccome ho inserito la userform in una macro..... come si può fare affinchè una volta cliccato sul pulsante copia, e copiato il testo nelle relative celle si chiuda solo la userform e prosegua la macro?
    grazie a Michela, ma la parte dell'elenco che vedo un termine e me ne copia uno abbreviato a fianco mi è utile.
    grazie ancora.






  • di totygno71 data: 17/04/2013 19:50:20

    1. Giusto!
    2.per far scrivere ott se nell combo c'è ottobre basta che gli dimensioni una variabile e gli assegni i primi 3 caratteri del valore della combobox a partire da sinistra
    esempio
    NomeVariabbile = Left("Stringa", 3)
    in questo caso nomevariabbile sarà = Str
    3. se vuoi che dopo l'inserimento dei dati la form si chiuda basta che infondo inserisci il comando "nascondi", cioè nomedellauserform.Hide

    ciao
     
    
    



  • di cristian (utente non iscritto) data: 17/04/2013 21:55:31

    ho provato ma più che altro mi interessava la funzione della 1ª combobox, cioè che il termine che vedo nella combobox che poi seleziono nella cella mi copia il testo della cella a fianco a destra.

    per quanto riguarda il la userform nascosta: il problema è che se non la chiudo con la x del chiudi finestra non prosegue la macro.
    grazie
    ciao



  • di totygno71 data: 18/04/2013 09:41:18

    Scusa Cristin,
    ma il file che ho allegato io quanto richiedi lo fa già... o sbaglio qualcosa?


    per quanto riguarda la userform mettendo il comando useform1.hide alla fine del codice del pulsante inserisci, la form si chiude e puoi continuare con il resto tranquillamente_



  • di cristian (utente non iscritto) data: 18/04/2013 14:31:46

    ciao totygno71
    si lo fà già per la combobox 1 ma nella 2 trascrive la parola selezionata nell'elenco non la parola a fianco.
    Più che altro era per capire come si fà.
    Per chiudere la userform1 tutto ok funziona.
    domanda è possibile nascondere e/o proteggere la macro in un file di excel ?
    grazie



  • di totygno71 data: 18/04/2013 14:42:56

    ok
    allora mi sembra risolto il problema,

    se è solo per capire come si fa, ti ho scritto prima il modo cioè :

    esempio
    NomeVariabbile = Left(textbox1, 3)
    in questo caso nomevariabbile sarà = ai primi 3 caratteri a partire da sinistra (left) del contenuto della textbox1_
    riguardo a proteggere il codice :
    si può impoasare una password andando nell'editor di vba(alt+f11) poi scegli strumenti quindi proprietàVBProject e da qui la scheda protezione_
    Se ritieni risolto il problema spunta pure su risolto.
    Ciao




  • di cristian (utente non iscritto) data: 19/04/2013 23:09:06

    ciao totygno71
    ti posso chiedere una spiegazione di cosa fanno i vari passaggi della tua macro, qui sotto:
    Set rng1 = Sheets("elenco").[H3:H25]

    Range("A1").End(xlUp).Select
    ActiveCell.Offset(1).Activate

    For Each c In rng1

    If c.Value = "" Then Exit For

    If c.Value = ComboBox1.Value Then
    ActiveCell.Value = c.Offset(, 1)
    ActiveCell.Offset(0, 1).Value = ComboBox2.Value

    giusto per capire meglio.
    grazie






  • di cristian (utente non iscritto) data: 20/04/2013 00:15:01

    ciao totygno71
    per spiegarmi meglio, sul discorso dell'elenco ti invio un file, da cui vedrai che il primo dato è ok, cioè vedo una parola (città italiana) nella combobox e mi trascrive la sigla targa, (presenti nel foglio elenco) nel secondo, terzo, quarto, quinto la parola che seleziono è anche quella che appare, invece di apparire la sigla o il codice avviamento postale, come vorrei.
    ho visto le tue risposte ma non riesco a capire come applicarle.
    porta pazienza non sono per niente pratico.
    grazie spero di essermi spiegato



  • di totygno71 data: 20/04/2013 10:08:56

    Set rng1 = Sheets("elenco").[H3:H25]---> defininsco rng1

    Range("A1").End(xlUp).Select ---> trovo l'ultima cella piena della colonna A
    ActiveCell.Offset(1).Activate ----> mi sposta nella cella sotto (vuota)

    For Each c In rng1--------> per ogni cella nel rng1

    If c.Value = "" Then Exit For-----> se il valore della cella è = a ninte allora esci dal ciclo (perche significa che sono finiti i valori da controllare

    If c.Value = ComboBox1.Value Then ---> se invece il valiere della cella è uguale a quello della combo1 allora
    ActiveCell.Value = c.Offset(, 1) ---> la cella attiva avrà il valore della cella affianco aalla cella che si sta controllando (cioè la sigla anziche il valore della combo)
    ActiveCell.Offset(0, 1).Value = ComboBox2.Value--> e la cella affianco alla cella attiva a vra il valore della combo2

    spero di non averti aumentato la confusione



  • di totygno71 data: 20/04/2013 10:15:08

    Ho vito il tuo file

    con la spiegazione che ti ho appena fornito dovresti farcela a modificare il codice_
    Prova se hai problei ci sono_

    suggeimento = c.offset(0,1).value
    e non = combobox
    ^_^



  • di cristian (utente non iscritto) data: 20/04/2013 11:59:35

    ciao totygno71,
    mi spiace ho provato fino ad ora ma non riesco a farlo girare, sono proprio scarso...
    mi faresti un esempio pratico sul file che ti ho mandato?
    mi faresti una grande cortesia.
    grazie



  • di totygno71 data: 20/04/2013 22:43:02

    ti ho fatto un esempio con la combobox2 quella dello stato per capirci
    per le altre basta che fa la stessa cosa-

    ciao



  • di cristian (utente non iscritto) data: 21/04/2013 00:08:00

    ciao totygno71,
    intanto grazie per la disponibilità,
    un ultima domanda, avendo aggiunto altre 2 combobox arrivando da 4 a 6, avrei dovuto aggiungere 2 variabili in questo punto ?
    Dim rng1 As Range, rng2 As Range, cells As Range, c As Range
    Dim giorno As String
    Lo chiedo per un chiarimento in quanto funzionava lo stesso anche senza aggiungerla nel Dim........

    e la variabile "c" deve sempre stare per ultima?






  • di totygno71 data: 21/04/2013 10:38:33

    cit:
     
    cit: la variabile "c" deve sempre stare per ultima? 
    risp: NO
    cit "avendo aggiunto altre 2 combobox arrivando da 4 a 6, avrei dovuto aggiungere 2 variabili in questo punto?"
    Risp: Non è obbligatorio, ma è funzionale soprattutto in progetti molto complessi_
    Ciao
    se risolto spunta pls... ^_^



  • di totygno71 data: 21/04/2013 11:04:57

    ops
    ho inserito la risposta nel codice O_o



  • di cristian (utente non iscritto) data: 21/04/2013 12:26:15

    ciao totygno71
    grazie per il tuo aiuto.



  • di totygno71 data: 21/04/2013 12:29:39

    prego è stato un piaScere ^_^