Stessa routine su oggetti diversi



  • Stesseroutinesuoggettidiversi
    di Soncia (utente non iscritto) data: 23/12/2008

    Forse la domanda è stupidissima, ma sono alle prime armi con il vba, sto facendo anceh il corso on line su questo sito ma poichè contemporaneamente devo anche "produrre" vi faccio una domanda che qualora mi rispondeste mi farebbe risparmiare parecchio tempo.
    vorrei sapere se una medesima routine che va a operare su diversi fogli di lavoro può in qualche modo essere scritta una volta sola specificando il foglio di lavoro sul quale deve operare...
    in pratica vorrei sapere se nell'esempio che ho postato sotto è possibile sostituire il foglio "tabella" con il foglio "xxx" senza riscrivere interamente la routine!!

    grazie
     
    For R = X To Y
       dFTU = Sheets("tubi").Cells(R, 1)
       SpFTU = Sheets("tubi").Cells(R, 2)
            For RR = XX To YY + 1
            RIGA = 0
            DeFTA = Sheets("tabella").Cells(RR, 2)
                 If dFTU = dFTA Then RIGA = RR
    If RIGA <> 0 Then Exit For
            Next
            For C = ...
    ecc ecc...
    
    
    



  • di Baz (utente non iscritto) data: 23/12/2008

    Ciao,
    al tuo codice ho aggiunto un semplice ciclo che si carica il nome di ogni foglio, vedi se può andarti bene.

    ciao
     
    Sub CicloFogli()
    Dim myFoglio As String
    Dim i
    
    'ciclo per ogni foglio
    For i = 1 To Sheets.Count
       myFoglio = Sheets(i).Name
       
        For R = X To Y
           dFTU = Sheets(myFoglio).Cells(R, 1)
           SpFTU = Sheets(myFoglio).Cells(R, 2)
                For RR = XX To YY + 1
                RIGA = 0
                DeFTA = Sheets("tabella").Cells(RR, 2)
                     If dFTU = dFTA Then RIGA = RR
        If RIGA <> 0 Then Exit For
                Next
                'For C = ...
        'ecc ecc...
    Next i
    
    End Sub



  • di Soncia (utente non iscritto) data: 23/12/2008

    Ti ringrazio per la risposta... ma non è esattamente ciò che cercavo, poichè non sempre devo eseguire un ciclo completo su ciascun foglio. la mia richiesta è volta a una semplificazione nella scrittura e comprensione del codice stesso visto che poi non lo guardo solo io ma anche altre persone. oltretutto ogni qual volta vado a modificare il codice devo farlo su ognuno di questi cicli e la cosa diventa piuttosto laboriosa oltre che poco elegante...



  • di Baz (utente non iscritto) data: 23/12/2008

    Se operi sempre sullo stesso file, basta che il tuo codice lo metta in un modulo e che da qualunque foglio lanci sempre la stessa macro...



  • di R (utente non iscritto) data: 23/12/2008

    Basta creare gli argomenti alla tua routine
    vedi esempio qui sotto
    saluti
    r

     
    Sub test()
    TuaRoutineFoglio , ThisWorkbook.Worksheets(1)
    End Sub
    
    
    Sub TuaRoutineFoglio( _
        Optional Wb As Workbook, _
        Optional Sh As Worksheet)
    
        
    If Sh Is Nothing Then _
        Set Sh = ActiveSheet
        
    If Wb Is Nothing Then _
        Set Wb = Sh.Parent
        
    'da qui in poi basta che riferisci il codice
    'a Sh o Wb come nelle righe che seguano
    'dove possibile io uso argomenti optional
    'ovvero non obbligatori in questo caso dopo
    'normalmente a inizio routine li verifichi
    'ed eventualmente assegni un valore
    
    Sh.Range("a1") = 1
    Wb.Sheets.Add
    
    
    End Sub