
Sub copia_da_ogni_foglio()
Dim y As Integer
Dim foglio
'con questa istruzione evito di passare i fogli uno a uno
Application.ScreenUpdating = False
'imposto una variabile per indicare da quale riga partire con la successiva copiatura
'per esempio dalla seconda riga se nella prima ci sono le intestazioni
y = 2
'passo in rassegna ogni foglio della cartella
For Each foglio In Worksheets
'se il nome del foglio è diverso da riepilogo...
If foglio.Name <> "riepilogo" Then
'allora lo attivo
foglio.Activate
'se nel foglio la cella m1 non contiene la d proseguo
If Range("m1") <> "d" Then
'copio le due celle che mi interessano
Range("c1", "d1").Copy
'mi porto sul foglio riepilogo
With Sheets("riepilogo").Activate
'seleziono la cella dove voglio copire i dati
Range("a" & y).Select
'incollo i dati
ActiveSheet.Paste
'aumento di una riga la variabile (per copiare su quella successiva)
y = y + 1
End With
End If
End If
'passo al successivo foglio della cartella
Next foglio
'apro il foglio riepilogo (se già non ci fossi)
Sheets("riepilogo").Select
End Sub
|
Sub macro51()
Dim sh As Worksheet, i As Integer
For Each sh In Worksheets
If sh.Name = "riepilogo" Then
MsgBox "Tutti i dati sono stati copiati."
Exit For
End If
i = i + 1
sh.[c1].Copy Destination:=Sheets("riepilogo").[a5].Offset(i, 0)
sh.[d1].Copy Destination:=Sheets("riepilogo").[b5].Offset(i, 0)
Next
End Sub |
if foglio.name <> "riepilogo" or foglio.name <> "storico" then ... |
Option Explicit
'copia e incolla nel foglio in cui vorrai inserire, in A1, il nome del foglio da raggiungere
Private Sub Worksheet_Change(ByVal Target As Range)
Dim foglio_da_raggiungere As String
' Questa routine intercetta il cambiamento di una cella qualunque del presente foglio.
' Lo scopo è attivare il foglio come scritto nella cella A1.
' Se il foglio non esiste la routine non genera errori e si ferma.
' Potrebbe rallentare le operazioni in caso di cartelle con moltissimi fogli!
'se cancello una cella oppure se digito qualcosa in una cella diversa da [A1] (o la cancello),
'me lo lascia fare senza problemi
If Target = "" Or Target.Address <> [a1].Address Then Exit Sub
'poichè i nomi dei fogli sono tutti codici di quattro cifre numeriche, formatto l'inserimento
'in modo adeguato e lo conservo in foglio_da_raggiungere; a video il numero perde gli zeri iniziali
'ma non mi importa :)
foglio_da_raggiungere = Format(Target, "0000")
'se digito qualcosa che non sia composto da quattro numeri, lascio eprdere tutto: esco e ignoro
'nota l'uso di Like :)
If Not (foglio_da_raggiungere Like "[0-9][0-9][0-9][0-9]") Then Exit Sub
'in caso abbia digitato il nome di un foglio esistente, lo seleziono e lo attivo
'altrimenti ignoro l'errore e mi fermo (per comodità intercetto l'errore 9, foglio non trovato)
On Error Resume Next
Worksheets(foglio_da_raggiungere).Activate
On Error GoTo 0
End Sub
|
