errore di compilazione



  • errore di compilazione
    di Mauro (utente non iscritto) data: 07/02/2013 12:00:12

    Ciao a tutti, questo codice mi da errore di compilazione al primo ciclo 'a' .
    In pratica con il ciclo 'a' trovo il dato = alla cella B9, nel ciclo b trovo il dato = alla cella A2.
    Sono confuso.
    Grazie per l'aiuto.
    Mauro
     
    Sub inserimentodati()
    Dim a As String
    Dim b As String
    Dim c As String
    c = [B9]
        For a = 7 To 450
            If Foglio20.Cells(a, 7).Value = Foglio22.Cells(9, 2).Value Then
                For b = c To 31
                    If Foglio20.Cells(b, 7).Value = Foglio22.Cells(1, 2).Value Then
                        'Foglio20.Cells(b, 11).Value = Foglio22.Cells(11, 2).Value
                        'Foglio20.Cells(b, 12).Value = Foglio22.Cells(13, 2).Value
                        'Foglio20.Cells(b, 13).Value = Foglio22.Cells(15, 2).Value
                        'Foglio20.Cells(b, 14).Value = Foglio22.Cells(17, 2).Value
                        'Foglio20.Cells(b, 15).Value = Foglio22.Cells(19, 2).Value
                        Foglio20.Cells(b, 12).Value = "ok"
                    End If
                Next b
            End If
        Next a
    End Sub
    



  • di HarryBosch data: 07/02/2013 18:41:24

    beh, vedo subito un errore lampante:
    hai dichiarato la variabile "a" come stringa ma in realtà la utilizzi come numero e lo stesso vale per "b" e "c".
    Quindi:
    Dim a as integer, b as integer, c as integer

    Puoi utilizzare il With per evitare di riportare sempre il riferimento (basta poi aggiungere un punto alle relative istruzioni) e selezionare inizialmente il foglio di destinazione:


     
    Sub inserimentodati()
        Dim a As Integer, b As Integer, c As Integer
        c = [B9]
    
        With Foglio22
            Foglio20.Select
    
            For a = 7 To 450
                If Cells(a, 7) = .Cells(9, 2) Then
                    For b = c To 31
                        If Cells(b, 7) = .Cells(1, 2) Then
                            Cells(b, 11) = .Cells(11, 2)
                            Cells(b, 12) = .Cells(13, 2)
                            Cells(b, 13) = .Cells(15, 2)
                            Cells(b, 14) = .Cells(17, 2)
                            Cells(b, 15) = .Cells(19, 2)
                            Cells(b, 12) = "ok"
                        End If
                    Next b
                End If
            Next a
    
        End With
    End Sub
    


  • errore di compilazione
    di Mauro (utente non iscritto) data: 07/02/2013 19:49:09

    Adesso mi da errore di run-time 13: tipo non corrispondente.
    HarryBosch credo che ho sbagliato tutto, sia proprio da modificare il codice, in pratica il codice mi scrive determinati numeri se trova i valori Foglio22.Cells(9, 2) e Foglio22.Cells(1, 2) nel foglio20 dalla riga 7 to 450
    e li scrive accanto al Foglio20.Cells(a, 11:15).
    Non so ancora se mi sono spiegato bene.
    Grazie Mauro


  • errore di compilazione
    di Mauro (utente non iscritto) data: 08/02/2013 11:51:51

    Ciao HarryBosch, il codice non mi da errore e non mi inserisce i dati.
    Nella colonna 7 del foglio 20 ho inserito dati: Gennaio, Febbraio, ......... e i nomi dei fornitori tipo acqua, luce, gas, ect......., il ciclo a trova il periodo mentre il ciclo b trova il fornitore in quel periodo.
    Grazie ancora
    Mauro
     
    Sub inserimentodati()
     Dim a As Integer, b As Integer, c As String
        c = [B9]
    
        With Foglio22
            Foglio20.Select
    
            For a = 7 To 450
                If Cells(a, 7) = .Cells(9, 2) Then
                    For b = c To 31 'il ciclo b parte dal valore della cella (a, 7)
                        If Cells(b, 7) = .Cells(1, 2) Then
                            Cells(b, 11) = .Cells(11, 2)
                            Cells(b, 12) = .Cells(13, 2)
                            Cells(b, 13) = .Cells(15, 2)
                            Cells(b, 14) = .Cells(17, 2)
                            Cells(b, 15) = .Cells(19, 2)
                        End If
                    Next b
                End If
            Next a
    
        End With
    End Sub
    



  • di HarryBosch data: 08/02/2013 12:45:01

    Ottimo.. infatti la sintassi del codice mi sembrava giusta, a patto che Foglio20 e Foglio22 esistano sulla cartella di lavoro, altrimenti avresti avuto un errore.

    Se ritieni di aver risolto allora puoi spuntare la casellina... altrimenti siamo qua per ulteriori accorgimenti


  • errore di compilazione
    di Mauro (utente non iscritto) data: 08/02/2013 13:36:35

    Si il Foglio20 e Foglio22 esistono sulla stessa cartella di lavoro.