Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

codice comune a più fogli di lavoro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

codice comune a più fogli di lavoro

Postdi luca62 » 08/01/15 08:05

Ho un utilissimo codice (fatto da Anthony e Zerokelvin) che devo copiare su n fogli di lavoro di uno stesso file
in pratica lo stesso codice di lavoro deve essere eseguito su tutti i fogli che vanno dal n^
2 fino a tutti meno gli ultimi 8.
è possibile creare una macro per evitare di copiare manualemente su ogni cartella:?

Inoltre, come si indica nella funzione To un intervallo che va per i= 1-4 e mi faccia anche il 7 e il 13 e il 19?
allego codice che devo modificare :

Codice: Seleziona tutto
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect
Dim myBase(1 To 4)
myBase(1) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!A3"
myBase(2) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!C3"
myBase(3) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!B3"
myBase(4) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!D3"
'Check esistenza file:
mySplit = Split(myBase(1), "[")
myFile = Replace(mySplit(0), "'", "") & Range("$D$2").Value & ".xls"
If Len(Dir(myFile)) = 0 Then
    MsgBox ("il file " & myFile & " non esiste" & vbCrLf & _
        "Le formule non sono state alterate")
    Exit Sub
End If
'
Application.EnableEvents = False
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 4
    Cells(3, 1 + i).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "ZCZCX", Range("$D$2").Value)
Next i
Application.EnableEvents = True
ActiveSheet.Name = Left([D2] & " " & [C2], 20)
ActiveSheet.Protect
End Sub


In pratica oltre alle 4 colonne (le prime 4 devo fare lo stesso lavoro alla colonna 7,13.19)
dovrei aggiungere le:
Codice: Seleziona tutto
myBase(2) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!F3"
myBase(3) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!G3"
myBase(4) = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!H3"


come posso fare?
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Sponsor
 

Re: codice comune a più fogli di lavoro

Postdi Anthony47 » 08/01/15 11:43

Togli l' attuale Worksheets_Activate e inserisci il suo codice (eccetto l' intestazione) in una "MacroM" che posizioni su un Modulo standard.
Poi inserisci nel modulo vba ThisWorkbook
Codice: Seleziona tutto
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If ActiveSheet.Index > 1 And ActiveSheet.Index < (Worksheets.Count - 8) Then Call macroM
End Sub

In questo modo il codice partira' secondo quanto inserito nella nuova Sub Workbook_SheetActivate.

Quanto alla seconda parte del quesito, sara' perche' non ricordo quale era il problema originale che quella macro aveva risolto ma non l'ho capita.

Ti prego di usare il tag "Code" per il codice che alleghi, il messaggio ne guadagna in leggibilita': selezioni il testo da marcare come Codice, premi il pulsante Code che trovi in testa al textbox in cui stai inserendo il messaggio.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: codice comune a più fogli di lavoro

Postdi luca62 » 08/01/15 12:39

sempre puntuale nelle risposte!..
la macro mi permette di andare a sostituire dei riferimenti a file esterni e la cosa funziona da Dio,
solo che invece di copiare da un file esterno tutte le prime 4 colonne (partendo dalla 3^riga)
vorrei copiare le colonne 1,2,3,4,7,13,19
e quindi modificare il For i = 1 To 4 in...qualcosa che dica oltre che per i=1 To 4 anche la 7,13 e 19
ma non so come muovermi!
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: codice comune a più fogli di lavoro

Postdi Anthony47 » 08/01/15 12:54

Allora aggiungi dopo Next i queste 6 linee:
Codice: Seleziona tutto
Next i
Myform = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!F3"
Cells(3, 1 + 7).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myform, "ZCZCX", Range("$D$2").Value)
Myform = "'H:\produzione\scheda preventivo\[ZCZCX.xls]CARTIGLIO'!G3"
Cells(3, 1 + 13).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myform, "ZCZCX", Range("$D$2").Value)
'....(5)
'....(6)
Le ultime 2 le devi mettere da solo, avendo oramai capito la logica :D
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: codice comune a più fogli di lavoro

Postdi luca62 » 08/01/15 19:53

bingo! grazie Anthony!
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54


Torna a Applicazioni Office Windows


Topic correlati a "codice comune a più fogli di lavoro":


Chi c’è in linea

Visitano il forum: PcBase e 6 ospiti