macro per inserire i DDT



  • macro per inserire i DDT
    di red lotus (utente non iscritto) data: 12/07/2015 00:42:51

    ciao ragazzi sto creando una macro che serve per caricare i ddt all'interno di un foglio. dovrò poi crearne un'altra che servirà per carcare i ddt e per restituire come risultato il protocollo e i vari DDT inseriti all'interno. mi trovo davanti un problema però, cioè la gestione di un errore di flow che avviene quando il ddt caricato è solamente 1

    On Error Resume Next
    ncolonne = Range("C16", Range("C16").End(xlDown)).Cells.Count
    If errnumber = 6 Then
    ncolonne = 1
    End If
    ncolonne = Range("C16", Range("C16").End(xlDown)).Cells.Count

    come posso risolvere questo problema?

    Grazie a tutti anticipatamente
     
    Sub caricaDDT()
    'dichiaro le variabili
    Dim protocollo As Long
    Dim ddt As Long
    Dim caricaDDT As Worksheet
    Dim foglio1 As Worksheet
    Dim ncolonne As Integer
    Dim nrighe As Integer
    Dim incremento As Integer
        
    
    
    
    
    
    'rinomino i fogli di lavoro'
    Set ddt = ThisWorkbook.Sheets("D.D.T. )
    Set caricaDDT = ThisWorkbook.Sheets("Carica D.D.T.")
    
    'mi  sposto nel foglio carica DDT'
    
    caricaDDT.Select
    
    'dichiaro che la variabile protocollo prenderà il valore della cella 8C'
    
    protocollo = Cells(8, "C").Value
       Cells(8, "C").Select
        Selection.Copy
    
    'inserisco i controlli per la cella 8C'
    
    If protocollo = 0 Then
    MsgBox ("inserire il numero protocollo della fattura vetrauto ")
    Application.CutCopyMode = False
    Cells(8, "C").Select
    Exit Sub
    End If
    
    'mi sposto nel foglio DDT'
    
       DDT.Select
    'mi inserisco  nella cella A1 e scendo fino all'ultima cella inserita'
    
        Range("A1").Select
        Selection.End(xlDown).Select
    'scendo di una casella e copio il valore all'interno della cella
        ActiveCell.Offset(1, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    'vado nel foglio carica DDT'
        caricaDDT.Select
      'dichiaro che la variabile protocollo prenderà il valore della cella 8C'
        ddt = Cells(16, "C").Value
    'controllo che la casella non sia vuota'
    If ddt = 0 Then
            MsgBox (" inserire i ddt di vetrauto")
            Application.CutCopyMode = False
            Cells(16, "C").Select
            Exit Sub
            End If
            
            On Error Resume Next
        ncolonne = Range("C16", Range("C16").End(xlDown)).Cells.Count
            If errnumber = 6 Then
            ncolonne = 1
            End If
            
        ncolonne = Range("C16", Range("C16").End(xlDown)).Cells.Count
        
        
        nrighe = 1
        incremento = 16
        'ciclo for per inserire i dati
        For i = 1 To ncolonne
            Cells(incremento, "C").Select
            If ddt = 0 Then
            MsgBox (" inserire i ddt di vetrauto")
            Application.CutCopyMode = False
            Cells(b, "C").Select
            Exit Sub
            End If
            Selection.Copy
            DDT.Select
            Range("A1").Select
            Selection.End(xlDown).Select
             ActiveCell.Offset(0, nrighe).Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            nrighe = nrighe + 1
            incremento = incremento + 1
            caricaDDT.Select
            Next
            
        Range("C8").Select
        Application.CutCopyMode = False
        Selection.ClearContents
        ActiveWindow.SmallScroll Down:=-24
        Range("C16").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.ClearContents
        Range("C8").Select
    End Sub



  • di red lotus (utente non iscritto) data: 12/07/2015 00:48:09

    per il momento ho risolto in questo modo un pò rozzo . potete aiutarmi a riscrivere la macro in modo più corretto per favore?
     
    If Cells(17, "C").Value = 0 Then
        ncolonne = 1
        Else
        ncolonne = Range("C16", Range("C16").End(xlDown)).Cells.Count
        End If