Risultati da 1 a 13 di 13

Discussione: macro per inserimento dati



  1. #1
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    macro per inserimento dati

    Buonasera a tutti ho questa macro in una userform che funziona perfettamente
    Codice: 
    Private Sub CommandButton1_Click()If ComboBox1 <> "" Then 'riga aggiunta
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
            End If
        Next
         For y = 6 To 29 'vedete Voi dove debba terminare
         uCol = Cells(y, 16).End(xlToLeft).Column + 1
         Application.EnableEvents = False 'riga aggiunta
               If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
            End If
            y = y + 1 'riga aggiunta
        Next
        Application.EnableEvents = True 'riga aggiunta
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next
         ComboBox2.SetFocus
        End If 'riga aggiunta
    End Sub
    grazie a ges e raffaele....avendo avuto il bisogno di allungare i campi di inserimento fino alla riga 56 l'ho modificata cosi
    Codice: 
    Private Sub CommandButton1_Click()If ComboBox1 <> "" Then 'riga aggiunta
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
            End If
        Next
         For y = 6 To 56 'vedete Voi dove debba terminare
         uCol = Cells(y, 16).End(xlToLeft).Column + 1
         Application.EnableEvents = False 'riga aggiunta
               If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
            End If
            y = y + 1 'riga aggiunta
        Next
        Application.EnableEvents = True 'riga aggiunta
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next
         ComboBox2.SetFocus
        End If 'riga aggiunta
    End Sub
    m scrive solo fino alla riga 33 poi l' ho modificata cosi e va pero la domanda è perchèper farla funzionare ho dovuto mettere due cicli separati ?
    Codice: 
    Private Sub CommandButton1_Click()If ComboBox1 <> "" Then 'riga aggiunta
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
            End If
        Next
         For y = 6 To 33 'vedete Voi dove debba terminare
         uCol = Cells(y, 16).End(xlToLeft).Column + 1
         Application.EnableEvents = False 'riga aggiunta
               If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
            End If
            y = y + 1 'riga aggiunta
        Next
        Application.EnableEvents = True 'riga aggiunta
         For y = 41 To 56 'vedete Voi dove debba terminare
         uCol = Cells(y, 16).End(xlToLeft).Column + 1
         Application.EnableEvents = False 'riga aggiunta
               If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
            End If
            y = y + 1 'riga aggiunta
        Next
        Application.EnableEvents = True 'riga aggiunta
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next
         ComboBox2.SetFocus
        End If 'riga aggiunta
    End Sub
    le celle tra le due griglie le ho riempite per non creare buchi...allego i file usf perfettamente funzionante e "ostia"funzionante ma col doppio ciclo....
    File Allegati File Allegati

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    816
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53

    Re: macro per inserimento dati

    Il problema nasce da questa riga:
    Codice: 
    uCol = Cells(y, 16).End(xlToLeft).Column + 1
    Con essa si calcola l'ultima colonna utilizzata riferita alla riga che si sta processando. Data la struttura del tuo foglio le righe da 34 a 40 sono strutturate in modo diverso dalle zona che contiene i tuoi dati da gestire e pertanto quella riga di codice fallisce nel calcolare l'ultima colonna da elaborare.

  3. #3
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    però se guardate il file turni usf è molto simile e li funziona....

  4. #4

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7149
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: macro per inserimento dati

    Ciao Danilo,
    io non posso provare perchè per il mio Mac i tuoi file sono out!

    Ma facendo questa modifica, con un solo ciclo, non funziona?
    Prova tu.
    Codice: 
    Private Sub CommandButton1_Click()
    If ComboBox1 <> "" Then
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
            End If
        Next
         For y = 6 To 56
         uCol = Cells(y, 16).End(xlToLeft).Column + 1
         Application.EnableEvents = False
               If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
            End If
            y = y + 1
        Next
        Application.EnableEvents = True
         
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next
         ComboBox2.SetFocus
        End If
    End Sub
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  5. #5
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    ciao Ges è la stessa modifica che ho fatto io nel codice 2 del post 1.......

  6. #6

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7149
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: macro per inserimento dati

    Hai ragione .. mi era sfuggita.
    E' strano però ... dovrebbe funzionare .
    Guardando il foglio che hai allegato (lo posso solo guardare) vedo cha in parte il foglio è protetto ... prova a sboccarlo e lasciandolo sboccato prova a inserire i dati.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #7
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    Funziona soltanto con il doppio ciclo....non è un problema perchè il suo lavoro lo fà.....era per capire.....

  8. #8

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7149
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: macro per inserimento dati

    Credo di aver capito quale sia il problema ... prova a eliminare la riga vuota 36 e prova con un solo ciclo ... e fammi sapere.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  9. #9
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    si cosi funziona però la riga 36 l'avevo riempita proprio in previsione di un errore del genere......

  10. #10
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro per inserimento dati

    Prova con queste.
    Mi raccomando non dichiarare mai le variabili
    Secondo me la riga6 è sbagliata, dovresti mettere ...Value = ""
    Intendi dire che 0, potrebbe essere com 0:00:00 e nel ciclo For metti un zero in quelle vuote (anche se non lo vedi)

    Codice: 
    Private Sub CommandButton1_Click()
    Dim i, y,uCol
    If ComboBox1 <> "" Then 'riga aggiunta
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
            End If
        Next
         Application.EnableEvents = False 'riga aggiunta
         For y = 6 To 56 'vedete Voi dove debba terminare
            If ComboBox1 = Cells(y, 2) And Cells(y, 16) = "" Then
                uCol = Cells(y, 16).End(xlToLeft).Column + 1
                    Cells(y, uCol) = ComboBox2.Value
                    Cells(y, uCol).Offset(0, 1) = ComboBox3.Value
                    Cells(y, uCol).Offset(1, 0) = ComboBox4.Value
                    Cells(y, uCol).Offset(1, 1) = ComboBox5.Value
                    Exit For
            End If
            If y = 32 Then y = y + 8 Else y = y + 1 'riga aggiunta
        Next
        Application.EnableEvents = True 'riga aggiunta
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next
         ComboBox2.SetFocus
        End If 'riga aggiunta
    End Sub
    
    Sub CANCELLA()
    Dim area As Range
        Set area = Union(Range("C6:P33"), Range("C41:P56"))
            Sheets(1).Unprotect "123"
                If MsgBox("Sei sicuro di cancellare i dati?", vbQuestion + vbYesNo, "Attenzione...") = vbNo Then Exit Sub
                    Range("G2") = ""
                    area.ClearContents
                    area.Interior.ColorIndex = xlNone
            Sheets(1).Protect "123"
    End Sub

  11. #11
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    Grazie Raffaele funziona....io avevo risolto in modo "casareccio" inserendo due righe e riempendole.....
    quando ne hai voglia tempo e la commenti? che l altra l'ho capita qui mi sfugge soprattutto questa parte
    Codice: 
     If y = 32 Then y = y + 8 Else y = y + 1 'riga aggiunta
        Next
    comunque grazie ancora Danilo

  12. #12
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro per inserimento dati

    Siccome usi celle unite, il ciclo For però avanza solo di 1.
    For y = 6 To 56 step 2, oppure y = y + 1, pareggiano le righe delle celle doppie. Siccome hai due tabelle If y = 32 Then y = y + 8 fà un salto direttamente nell'altra tabella.
    Dai un occhiata a questo e vedi cosa fà leggendo l'help

    Codice: 
    Private Sub CommandButton1_Click()
    Dim i, y, uCol, Rg As Object
    If ComboBox1 <> "" Then 'riga aggiunta
        For i = 2 To 5
            If Me.Controls("ComboBox" & i).Value = "" Then
                Me.Controls("ComboBox" & i).Value = 0
    'per mè non è corretto lo zero, mà Tu non hai fatto la combobox del giorno della settimana
            End If
        Next i
        Set Rg = Range("B4:B56").Find(ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not Rg Is Nothing Then
            uCol = Cells(Rg.Row, 16).End(xlToLeft).Column + 1
            If uCol <= 16 Then
                Application.EnableEvents = False 'riga aggiunta
                Cells(Rg.Row, uCol) = ComboBox2.Value
                Cells(Rg.Row, uCol).Offset(0, 1) = ComboBox3.Value
                Cells(Rg.Row, uCol).Offset(1, 0) = ComboBox4.Value
                Cells(Rg.Row, uCol).Offset(1, 1) = ComboBox5.Value
                Application.EnableEvents = True 'riga aggiunta
            End If
         End If
         For i = 2 To 5
         Me.Controls("ComboBox" & i).Value = ""
         Next i
         ComboBox2.SetFocus
    End If 'riga aggiunta
    Set Rg = Nothing
    End Sub

  13. #13
    L'avatar di D@nilo
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Roma
    Età
    45
    Messaggi
    1170
    Versione Office
    Excel 2010
    Likes ricevuti
    509
    Likes dati
    572

    Re: macro per inserimento dati

    grazie ottima spiegazione come sempre un ultima cosa dici"dai un occhiata a questo e vedi cosa fa leggendo l'help" immagino sia uno strumento per vedere cosa fa la routine passo passo ma come si fa?

Discussioni Simili

  1. Modificare macro, Inserimento di dati piú dinamico
    Di svizzera nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 31/01/17, 17:17
  2. [Risolto] Inserimento/richiamo automatico dati dopo inserimento voce da elenco
    Di Lithio nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 17/09/16, 15:40
  3. Modifica Macro Inserimento Numeri
    Di Bright nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 15/12/15, 17:14
  4. inserimento con funzione Macro
    Di nick0573 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 14/11/15, 17:30
  5. Macro per inserimento dati formazione
    Di Thaunu90 nel forum Domande su Excel VBA e MACRO
    Risposte: 20
    Ultimo Messaggio: 27/10/15, 17:33

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •