Stessa routine su oggetti diversi
Hai un problema con Excel? 
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
|
Vuoi Approfondire?