Domanda.

nome=Roberto
cognome=Mascali
versione=2002
conosco2=medio
email=alfio.mascali@tin.it
chra=22
problema=Ho un problema, la macro sottostante ha la funzione di aggiungere  un foglio di lavoro in una cartella di lavoro, denominarlo,  copiare la formattazione di un altro foglio e incollarla sul  nuovo, poi con diversi inputbox inserisco dei nomi. Ecco il problema è questo, se aggiungo il primo foglio tutto  funziona ma se voglio aggiungere il secondo foglio non va, ho capito qual è il problema ma non riesco a risolverlo. mi puoi
aiutare? In pratica io devo aggiungere dei fogli di lavoro,  questi devono essere formattati come quelli che ho già nella stessa cartella di lavoro. grazie anticipate
Roby
Sheets("Siris").Select
Sheets.Add
Sheets("Todero").Select
Cells.Select
Selection.Copy
Sheets("Foglio1").Select
Cells.Select
ActiveSheet.Paste
ActiveWindow.DisplayGridlines = False
ActiveWindow.Zoom = 119
Dim Titolo, Messaggio As String
Dim contenitore As Variant
Titolo = "Risorse Umane"
Messaggio = "Nuovo Nominativo"
On Error GoTo saltaerrore
contenitore = InputBox(Messaggio, Titolo)
Sheets("Foglio1").Select
Sheets("foglio1").Name = contenitore

Dim contenitore1 As Variant
Titolo = "Risorse Umane"
Messaggio = "Inserire il Grado"
contenitore1 = InputBox(Messaggio, Titolo)
Range("b9") = contenitore1

Dim contenitore2 As Variant
Titolo = "Risorse Umane"
Messaggio = "Inserire Nome e Cognome"
contenitore2 = InputBox(Messaggio, Titolo)
Range("i9") = contenitore2
 

Risposta.

Salve Roberto, sei un pò incasinato nelle spiegazioni. Se vuoi aggiungere un foglio formattato come uno già esistente nella stessa cartella, puoi usare il Copy anzichè Add, in questo modo hai una copia del foglio compreso la formattazione, esempio per copiare il foglio1 e inserirlo dopo il foglio3, e assegnare il nome che vuoi, esempio. supponendo che sia Todero il foglio già formattato:

Sheets("Todero").Copy After:=Sheets(3)
Sheets("Foglio1").Name = "Pippo"

ora, tu non l'hai scitto, ma i fogli che usi sono già rinominati? per questo il foglio aggiunto o copiato prende il nome di Foglio1, giusto? Comunque dopo l'istruzione sopra ti trovi già sul nuovo foglio (in questo modo puoi evitare di usare la prima inputbox per rinominare il foglio) e puoi far seguire le istruzioni delle altre due inputbox, così:

Sheets("Todero").Copy After:=Sheets(3)
Sheets("Foglio1").Name = "Pippo"
ActiveWindow.DisplayGridlines = False
ActiveWindow.Zoom = 119
Dim Titolo, Messaggio As String
Dim contenitore1 As Variant
Titolo = "Risorse Umane"
Messaggio = "Inserire il Grado"
contenitore1 = InputBox(Messaggio, Titolo)
Range("b9") = contenitore1

Dim contenitore2 As Variant
Titolo = "Risorse Umane"
Messaggio = "Inserire Nome e Cognome"
contenitore2 = InputBox(Messaggio, Titolo)
Range("i9") = contenitore2


Ora il Foglio1 copiato (o aggiunto) non esiste più come Foglio1, ma come pippo e se credi puoi ripetere le stesse istruzioni, CAMBIANDO IL NOME AL FOGLIO COPIATO, a seguire queste sopra, per quanti fogli vorrai.
Non so se ho capito la tua domanda, ma da come l'hai posta questo è ciò che sono riuscito a fare.
ciao, fammi sapere, ennius
 

Replica di Roberto.

Ciao Ennio, hai centrato il problema, ti ringrazio infinitamente.
Per quanto riguarda il casino nella macro, be tu sai che non è da molto che bazzico il vba ho imparato qualcosa ma mancano anni luce per esplorarlo tutto.
Anzi approfitto della tua gentilezza per chiederti un altro quesito. Io nella cartella di lavoro ho 6 fogli, dei quali 5 formattati allo stesso modo e nel sesto ho dei collegamenti dei 5. Mi spiego nella cella C46 dei 5 fogli ho il totale dell'intervallo C15:C45, nel foglio 6 cella A11 facendo copia incolla speciale ho il totale di tutti i 5 fogli cioè =Licciardello!$C$46+Todero!$C$46+Zappalà!$C$46Cinquanta!$C$46Mascali!$C$46. Ecco il quesito è questo è possibile magari con quanche funzione diversa farsì che quando aggiungo un nuovo foglio di lavoro la cella C46 di quest'ultimo venga aggiunta alla cella a11 del 6° foglio?.
Lo so la domanda è più incasinata della macro precedente ma spero di essermi fatto capire e che ci sia una risoluzione. Ti ringrazio ancora immensamente.
 

Risposta.

bene, il sesto foglio avrà un nome, no? supponiamo che si chiami "pippo". Dobbiamo quindi creare un ciclo che controlli il nome dei fogli, e se il nome è diverso da pippo, prenda il valore che sarà in una cella (C46) di ogni foglio e lo sommi ad un totale che va inizializzato a zero. Poi, siccome la macro la lancerai dal foglio pippo, quindi il foglio attivo in quel momento, rendiamo la cella A11 (o qualunque altra vorrai) del foglio attivo uguale al totale. Questa la routine:
Sub Total()
tot = 0
For Each ws In Worksheets
'per ogni foglio (ws) della cartella
If ws.Name <> "pippo" Then
'se il nome è diverso da pippo allora:
tot = tot + ws.[C46].Value
'si aggiunge a tot il valore che sarà il C46
End If
Next ws
ActiveSheet.[A11] = tot
'e si pone tot nella cella del foglio attivo (pippo)
End Sub


Questa routine ti permette di avere il totale per tutti i fogli, anche se ne aggiungi di nuovi. Unico accorgimento, non dovrai mai cambiare il nome del foglio che usi come totale (io ho messo pippo) e i fogli che aggiungi dovranno avere il totale foglio nella stessa cella (C46) comune a tutti gli altri fogli.
Spero tu capisca, fammi sapere, ennius