Runtime 13



  • Runtime 13
    di andrea (utente non iscritto) data: 15/12/2015 11:30:23

    Salve, sto usando questa macro per fare una schedulazione di un prodotto attraverso vari centri di lavoro.
    Credo che nel complesso il codice sia corretto ma il debug mi dà l'errore runtime 13 alla riga numero 7:
    Cells(i, 28) = DateAdd("d", 7, Cells(i - 1, 28))

    Come posso risolvere?
    Grazie mille per l'aiuto
    Andrea
     
    Sub Sched_Forward()
    Dim i As Integer
    i = 2
    Columns("AB:AB").NumberFormat = "dd/mm/yyyy"
    Do
        If (Cells(i, 28) = "") And Cells(i, 23) = "OSP" And DiffDate(Cells(i - 1, 28), DateAdd("d", 7, Cells(i - 1, 28)), 5) = 7 Then
            Cells(i, 28) = DateAdd("d", 7, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And Cells(i, 23) = "OSP" And DiffDate(Cells(i - 1, 28), DateAdd("d", 8, Cells(i - 1, 28)), 5) = 7 Then
            Cells(i, 28) = DateAdd("d", 8, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And Cells(i, 23) = "OSP" And DiffDate(Cells(i - 1, 28), DateAdd("d", 9, Cells(i - 1, 28)), 5) = 7 Then
            Cells(i, 28) = DateAdd("d", 9, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And Cells(i, 23) = "OSP" And DiffDate(Cells(i - 1, 28), DateAdd("d", 10, Cells(i - 1, 28)), 5) = 7 Then
            Cells(i, 28) = DateAdd("d", 10, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And DiffDate(Cells(i - 1, 28), DateAdd("d", 1, Cells(i - 1, 28)), 5) = 1 Then
            Cells(i, 28) = DateAdd("d", 1, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And DiffDate(Cells(i - 1, 28), DateAdd("d", 2, Cells(i - 1, 28)), 5) = 1 Then
            Cells(i, 28) = DateAdd("d", 2, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And DiffDate(Cells(i - 1, 28), DateAdd("d", 3, Cells(i - 1, 28)), 5) = 1 Then
            Cells(i, 28) = DateAdd("d", 3, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And DiffDate(Cells(i - 1, 28), DateAdd("d", 4, Cells(i - 1, 28)), 5) = 1 Then
            Cells(i, 28) = DateAdd("d", 4, Cells(i - 1, 28))
        End If
        If (Cells(i, 28) = "") And DiffDate(Cells(i - 1, 28), DateAdd("d", 5, Cells(i - 1, 28)), 5) = 1 Then
            Cells(i, 28) = DateAdd("d", 5, Cells(i - 1, 28))
        End If
      i = i + 1
    Loop Until IsEmpty(Cells(i, 12)) = True
    End Sub



  • di alfrimpa data: 15/12/2015 12:17:47

    Ciao Andrea

    Secondo me dovresti allegare anche un file con i tuoi dati (fittizi) su cui testare la tua macro.

    Con il solo codice non si può far nulla.

    Alfredo





  • di andrea (utente non iscritto) data: 15/12/2015 12:21:51

    appena allegato, ho cancellato dei dati da colonne esterne all'esecuzione.



  • di patel data: 16/12/2015 08:06:36

    tu parti da i=2, e poi fai la differenza con la cella i-1 dove non c'è una data, forse devi partire da i=3
     
        If (Cells(i, 28) = "") And Cells(i, 23) = "OSP" And DiffDate(Cells(i - 1, 28), DateAdd("d", 7, Cells(i - 1, 28)), 5) = 7 Then
    






  • di andrea (utente non iscritto) data: 16/12/2015 10:31:52

    Incredibile alla fine la soluzione + immediata ce l'hai sotto gli occhi e non te ne accorgi grazie!