eseguire codice in più fogli



  • eseguire codice in più fogli
    di Mauro (utente non iscritto) data: 22/04/2013 11:40:20

    Ciao a tutti, ho bisogno di un aiutino:
    il codice sotto riportato se lo eseguo con data odierna o del mese corrente funziona, se lo eseguo come ricerca nei fogli (3-4-5-6-7-8-9-10-16-17-18) mi da errore 400.
    Non trova la data perché è nel foglio 12, però volevo che facesse il controllo di tutti.
    Grazie in anticipo Mauro.



     
    Sub compiladati()
    Dim Data As String
    Dim RData As Long
    Dim m, a
    Data = [D15] 'data odierna
        For m = 7 To 1000
            If Foglio12.Cells(m, "A") = Data Then
                RData = m
                Exit For
            End If
        Next m
            For a = RData To RData + 1
                If Foglio12.Cells(a, 5).Value = Foglio13.Cells(21, 3).Value Then
                    Foglio12.Cells(a, 8).Value = Foglio13.Cells(21, 4).Value
                    a = a + 1
                    Foglio12.Cells(a, 8).Value = Foglio13.Cells(22, 4).Value
                End If
            Next a
    End Sub



  • di Vecchio Frac data: 22/04/2013 13:54:16

    Cosa intendi esattamente per "se lo eseguo come ricerca nei fogli (3-4-5-6-7-8-9-10-16-17-18)" ?




  • eseguire codice in più fogli
    di Mauro (utente non iscritto) data: 23/04/2013 10:40:35

    Intendo cercare la data corrente in tutti i fogli (3-4-5-6-7-8-9-10-12-16-17-18) e una volta trovata mi compila i dati.
    Grazie Vecchio Frac
    Mauro.



  • di Vecchio Frac data: 24/04/2013 16:23:09

    up (non ho il pc a casa per problemi tecnici in questi giorni e posso collegarmi solo dall'ufficio)




  • eseguire codice in più fogli
    di Mauro (utente non iscritto) data: 24/04/2013 16:41:53

    Grazie aspetto il tuo aiuto
    Mauro



  • di Vecchio Frac data: 25/04/2013 11:59:08

    Non sono sicuro che il codice seguente ti risolva la situazione.
    Mi sembra tutto un po' accrocchiato.
    Bisognerebbe vedere il tuo file e capire meglio cosa vuoi fare.
    Per esempio, non mi piace per niente cambiare il valore del contatore "a" all'interno del proprio ciclo For, è una cosa che non si dovrebbe fare.
     
    Sub compiladati()
    Dim Data As String
    Dim RData As Long
    Dim m As Integer, a As Integer, v As Variant, flag As Boolean
    
    Data = [D15] 'data odierna
        For m = 7 To 1000
            flag = False
            For Each v In Array(Foglio3, Foglio4, Foglio5, Foglio6, Foglio7, Foglio8, Foglio9, Foglio10, Foglio12, Foglio16, Foglio17, Foglio18)
                If v.Cells(m, "A") = Data Then
                    RData = m
                    flag = True
                    Exit For
                End If
            Next
            If flag Then Exit For
        Next m
        
        For a = RData To RData + 1
            If Foglio12.Cells(a, "E").Value = Foglio13.Cells(21, 3).Value Then
                Foglio12.Cells(a, "H").Value = Foglio13.Cells(21, 4).Value
                a = a + 1
                Foglio12.Cells(a, "H").Value = Foglio13.Cells(22, 4).Value
            End If
        Next a
    End Sub





  • eseguire codice in più fogli
    di Mauro (utente non iscritto) data: 26/04/2013 10:39:36

    Ciao Vecchio Frac, grazie per la risposta, ho provato a cambiare dal for a ma non mi funziona.
    Mi spiego meglio: i fogli sono i mesi, nella colonna "A" di ogni mese c'è la data con unione di celle, nella colonna "E" ho il corrispettivo a e sotto il corrispettivo b ripetuti per ogni data, devo compilare "H":
    A E H
    26-apr-2013 Corrispettivo a = Foglio13.Cells(21, 4).Value
    Corrispettivo b = Foglio13.Cells(22, 4).Value
    27-apr-2013 Corrispettivo a = Foglio13.Cells(21, 4).Value
    Corrispettivo b = Foglio13.Cells(22, 4).Value
    Grazie
    Mauro
     
    Sub compiladati()
    Dim Data As String
    Dim RData As Long
    Dim m As Integer, a As Integer, v As Variant, flag As Boolean
    
    Data = [D15] 'data odierna
        For m = 7 To 1000
            flag = False
            For Each v In Array(Foglio3, Foglio4, Foglio5, Foglio6, Foglio7, Foglio8, Foglio9, Foglio10, Foglio12, Foglio16, Foglio17, Foglio18)
                If v.Cells(m, "A") = Data Then
                    RData = m
                    flag = True
                    Exit For
                End If
            Next
            If flag Then Exit For
        Next m
        
                    For a = RData To RData + 1
        
                        If Cells(a, 5).Value = Foglio13.Cells(21, 3).Value Then
                            Cells(a, 8).Value = Foglio13.Cells(21, 4).Value
                                a = a + 1
                            Cells(a, 8).Value = Foglio13.Cells(22, 4).Value
                        End If
                    Next a
            
            'If Foglio12.Cells(a, "E").Value = Foglio13.Cells(21, 3).Value Then
             '   Foglio12.Cells(a, "H").Value = Foglio13.Cells(21, 4).Value
              '  a = a + 1
               ' Foglio12.Cells(a, "H").Value = Foglio13.Cells(22, 4).Value
           ' End If
       ' Next a
    End Sub
    



  • di Vecchio Frac data: 27/04/2013 20:47:16

    up -- qualcun altro?





  • di Textomb data: 28/04/2013 10:06:28

    Ma perchè fare dei cicli quando si può prendere direttamente il foglio che serve e scriverci dentro?
    Forse non ho capito l'obiettivo...
    In ogni caso, questa la mia idea. Vedi se può andare.

     
    Sub Compiladata()
    Dim Data As Date, MioMese(), MiaData As String
    Dim sh As Worksheet
    MioMese = Array("GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", _
    "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE", "NOVEMBRE", "DICEMBRE")
    MiaData = MioMese(Month([d15]) - 1) & " " & Format([d15], "yy") 'costruisce la stringa del Mese Anno
    On Error Resume Next
    Set sh = Worksheets(MiaData) 'Questo è il foglio del mese che ci interessa
    With sh.Cells.Columns(1).Find(what:=[d15]) 'trova la data nel foglio del mese
    .Offset(, 7).Value = [d21] 'Scrive il corrispettivo a
    .Offset(, 7).Offset(1).Value = [d22] 'Scrive il corrispettivo b
    End With
    If Err.Number <> 0 Then MsgBox "Dati non trovati. Controlla Foglio Mese e Data", vbCritical
    
    End Sub
    


  • eseguire codice in più fogli
    di Mauro (utente non iscritto) data: 30/04/2013 10:59:00

    Textomb Ti ringrazio, il codice è perfetto



    Mauro