Userform incremento su Modulo



  • Userform incremento su Modulo
    di ffante (utente non iscritto) data: 21/03/2015 19:47:24

    Buona sera ritorno quì a chiedere il vostro aiuto, ho un foglio1 "Rev1" al suo interno c'è

    una userform per inserimento Nuovo prodotto, nel fare l'inserimento vorrei avere la

    possibilita di automatizzare l'inserimento di moduli che mi incrementano il numero di riga

    in funzione dei dati che vengono scritti nel foglio10 "Dosaggi" questo inserimento è fatto

    con tre macro in sequenza, La prima mi da la possibilità di mettere i dati la seconda mi

    crea un pulsante e la terza mi apre un modulo "Nuovo_Rev1_1" ogni volta che inserisco un

    nuovo prodotto devo copiare i dati di questo modulo e devo copiare il tutto dentro al Modulo

    del pulsante e successivamente devo indicare il numero di riga corrispondente al nuovo prodotto.

    Avrei bisogno di creare una macro che nell'inserimento mi possa variare il nuovo modulo "Nuovo_Rev1_1" in funzione del numero di riga realmente scritto dalla userform.

    Di sicuro qualcuno di voi riesce a darmi una mano e sicuramente ne capisce molto più di me.

    Vi ringrazio anticipatamente Franco.

    Ho Postato Un file di esempio.
     
    Sub CommandButton1_Click()
    
    If ComboBox1.Text = "" Then
    MsgBox "Campo Destinazione Linea obbligatorio !!!", vbExclamation, "ATTENZIONE !!!"
    ComboBox1.SetFocus
    Exit Sub
    End If
    
    If TextBox2.Text = "" Then
    MsgBox "Campo Codice obbligatorio !!!", vbExclamation, "ATTENZIONE !!!"
    TextBox2.SetFocus
    Exit Sub
    End If
    
    If TextBox3.Text = "" Then
    MsgBox "Campo Prodotto obbligatorio !!!", vbExclamation, "ATTENZIONE !!!"
    TextBox2.SetFocus
    Exit Sub
    End If
    
    ' --------------- continua
    
    Sheets("Dosaggi").Visible = True
    Sheets("Dosaggi").Activate
    Dim iRow As Integer
    iRow = 3
    While Cells(iRow, 1).Value <> ""
    iRow = iRow + 1
    Wend
    Cells(iRow, 1) = ComboBox1
    Cells(iRow, 2) = TextBox2
    Cells(iRow, 3) = TextBox3
    Cells(iRow, 4) = TextBox4
    Cells(iRow, 5) = TextBox5
    Cells(iRow, 6) = TextBox6
    Cells(iRow, 7) = TextBox7
    Cells(iRow, 8) = TextBox8
    Cells(iRow, 9) = TextBox9
    Cells(iRow, 10) = TextBox10
    Cells(iRow, 11) = TextBox11
    Cells(iRow, 12) = TextBox12
    Cells(iRow, 13) = TextBox13
    Cells(iRow, 14) = TextBox14
    Cells(iRow, 15) = TextBox15
    Cells(iRow, 16) = TextBox16
    Cells(iRow, 17) = TextBox17
    Cells(iRow, 18) = TextBox18
    Cells(iRow, 19) = TextBox19
    Cells(iRow, 20) = TextBox20
    Cells(iRow, 21) = TextBox21
    Cells(iRow, 22) = TextBox22
    
    ' -------------- continua
    
    ComboBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    TextBox5 = ""
    TextBox6 = ""
    TextBox7 = ""
    TextBox8 = ""
    TextBox9 = ""
    TextBox10 = ""
    TextBox11 = ""
    TextBox12 = ""
    TextBox13 = ""
    TextBox14 = ""
    TextBox15 = ""
    TextBox16 = ""
    TextBox17 = ""
    TextBox18 = ""
    TextBox19 = ""
    TextBox20 = ""
    TextBox21 = ""
    TextBox22 = ""
    
    Unload Me
    
    Sheets("Rev1").Activate
    
    
    
    
    
    '   MsgBox
    
    MsgBox "NUOVO PRODOTTO INSERITO CON SUCCESSO", vbInformation, "      REV1"
    
    
    'Crea_Pulsante
    '
        
        ActiveSheet.Buttons.Add(987.75, 178.5, 202.5, 41.25).Select
        Selection.ShapeRange.LockAspectRatio = msoFalse
        Selection.ShapeRange.Height = 28.5
        Selection.ShapeRange.Width = 198.75
    '
    ' Apri_modulo_Rev1
    
        Application.Goto Reference:="Nuovo_Rev1_1"
    
    
        
    End Sub



  • di Vecchio Frac data: 21/03/2015 19:54:58

    cit "automatizzare l'inserimento di moduli che mi incrementano il numero di riga in funzione dei dati che vengono scritti"
    ---> cioè tu crei da codice un modulo per incrementare un numero di riga?

    cit. "devo copiare i dati di questo modulo e devo copiare il tutto dentro al Modulo del pulsante"
    ---> vuoi costruire da codice la creazione di codice?

    cit. " nell'inserimento mi possa variare il nuovo modulo "Nuovo_Rev1_1""
    ---> davvero? vuoi davvero modificare codice da codice?

    cit. Application.Goto Reference:="Nuovo_Rev1_1"
    ---> E quando hai raggiunto il nuovo modulo? devi eseguirne qualcosa?

    Non è che per caso è la strategia a dover essere rivista? se hai un form per l'inserimento dei dati, a cosa ti serve creare al volo un pulsante sul foglio? a che ti serve costruire *ogni volta* un modulo con del codice da eseguire?
    Insomma, non è che sei stato un campione di chiarezza :D <--- faccina sorridente!!!






  • di Lucas87 data: 21/03/2015 20:48:39

    Ciao
    Oltre alle considerazioni di Vecchio Frac aggiungo che creare oggetti sul foglio o in un form è parecchio complicato e richiede una precisione assoluta.
    Lo scopo delle macro solitamente è facilitare le operazioni: non si creano 20 codici che fanno la stessa cosa su righe diverse; si cerca il sistema per far fare ad un codice solo, 20 cose diverse in funzione a quello che serve.

    La parte in cui leggi le textbox, scrivi sul foglio e pulisci le textbox non si può guardare. Il sistema corretto è passare in rassegna gli elementi del form, controllare che siano textbox e poi, usando delle variabili che incrementano, scrivere sulle righe e sulle colonne corrette. (vedi sotto)
     
    Sub gestione_controlli_userform()
        For Each ctl In UserForm1.Controls
            If TypeName(obj) = ”TextBox” Then
                '...
                '...         
            End If
        Next
    End Sub
    



  • di ffante (utente non iscritto) data: 21/03/2015 23:15:44

    Vorrei modificare codice da codice perchè voglio evitare che si debba per forza aprire un modulo copiarlo e modificarlo dato che non ci sono sempre utenti che possano fare ciò,
    ed io non posso essere sempre presente per fare questo.
    Attualmente io inserisco un nuovo prodotto e tutti gli utenti che lo utilizzano cliccano sul pulsante e gli viene caricato automaticamente il prodotto e di conseguenza lo possono utilizzare perchè ha tutti i parametri prestabiliti.

    non so se mi sono spiegato bene.



  • di Vecchio Frac data: 22/03/2015 10:34:23

    @ffante perdona la mia ottusità (è l'età ^_^) ma non ci arrivo proprio a capire perchè l'inserimento di un nuovo prodotto ti costringa a modificare il codice esistente, in funzione dell'inserimento. E' il codice che deve essere così furbo da capire la situazione, adattarvisi e automatizzare l'operazione di inserimento, non costringere il programmatore a modificare il codice per adattarlo agli input dell'utente.





  • di ffante (utente non iscritto) data: 22/03/2015 15:23:44

    grazie per il chiarimento.



  • di Vecchio Frac data: 22/03/2015 19:15:11

    Hai spuntato come risolto? ma non credo che abbiamo risolto niente... e poi quale chiarimento? ho espresso solo dubbi ^_^