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?