You are here:---Rispondi a: [RISOLTO] Inserimento dati condizionato da verifica duplicati in due colonne
Rispondi a: [RISOLTO] Inserimento dati condizionato da verifica duplicati in due colonne2018-09-23T19:34:08+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Inserimento dati condizionato da verifica duplicati in due colonne Rispondi a: [RISOLTO] Inserimento dati condizionato da verifica duplicati in due colonne

sidsid
Moderatore
    Post totali: 716

    Una possibile soluzione che prevede l’uso di una UDF da mettere in un modulo standard (anche lo stesso della macro)

    La macro con una piccola modifica

    Sub CreaStorico2b()
    Dim sh1 As Worksheet, sh2 As Worksheet   'ho creato 2 variabili oggetto per i fogli
    Dim Ur As Long 'creato la variabile per l'ultima riga
    Dim sCF As String, sCorso As String
    
    Set sh1 = Worksheets("Attestato") 'metto negli oggetti creati il nome del foglio
    Set sh2 = Worksheets("Storico") 'ora scrivendo solo sh1-sh2 mi riferisco ad un foglio oppure un altro
    sh1.Activate 'mi posiziono sul foglio1 "Attestato"
    
    'trovo l'ultima riga occupata + 1 per predere la cella vuota
    Ur = sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1
    
    sCF = sh1.Range("C8").Value 'codice fiscale
    sCorso = sh1.Range("B14").Value 'corso
    
    If Not VERIFICA_DUPLICATI(sCF, sCorso, sh2, Ur) Then
        
        'a questo punto senza fare copia/incolla, passo direttamente i valori dal foglio1 al foglio2
        'notare che uso due esempi uno con Cells che fa riferimento Cells(Riga, Colonna) l'altro con range
        'io trovo più conveniente Cells
        sh2.Range("A" & Ur) = sh1.Range("C4")
        sh2.Range("B" & Ur) = sh1.Range("C6")
        sh2.Cells(Ur, 3) = sh1.Cells(8, 3)
        sh2.Cells(Ur, 4) = sh1.Cells(10, 3)
        sh2.Cells(Ur, 5) = sh1.Cells(14, 2)
        sh2.Cells(Ur, 6) = sh1.Cells(32, 6)
        sh2.Cells(Ur, 7) = sh1.Cells(38, 6)
    Else
        MsgBox "Utente già presente con lo stesso corso", vbExclamation, "ATTENZIONE"
    End If
    
    Set sh1 = Nothing 'cancello le variabili oggetto
    Set sh2 = Nothing
    End Sub

    L’UDF

    Public Function VERIFICA_DUPLICATI(ByVal CF As String, ByVal CORSO As String, ByVal ws As Worksheet, ByVal n As Long) As Boolean
    Dim cella As Range
    
    Set cella = ws.Range("C1:C" & n).Find(CF, , xlValues, xlWhole)
    
        If Not cella Is Nothing And cella.Offset(0, 2).Value = CORSO Then
            VERIFICA_DUPLICATI = True
        Else
            Set cella = Nothing
        End If
    
    End Function

    da verificare che siano presenti nell’attestato, il codice fiscale e il corso.
    Sicuramente migliorabile.
    Ciao :bye:

    Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

    Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

    Chiudi