Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Con una macro, creare copia del foglio attivo rinominandolo col valore di una cella.

801 views
Skip to first unread message

Cingolo

unread,
Apr 6, 2009, 5:45:28 PM4/6/09
to
Salve,
premesso che per risolvere alcuni problemini di lavoro ho sempre
utilizzato solo macro molto semplici con il registratore di excel
leggendo spesso questo gruppo, ora non riesco a risolvere questo
problema:

ho un foglio1 con alcuni dati e un pulsante al quale vorrei assegnare
la macro "Duplica".

Su questo foglio1 l'esecuzione della macro "Duplica" dovrebbe:

1) creare una copia del foglio1 (inclusa la macro) il cui nome
dovrebbe essere uguale al valore della cella W1 del foglio1 (una data)
2) copiare i valori delle celle U8:V56 del foglio1 e incollarli nelle
celle U8:V56 del nuovo foglio

Il problema che non riesco a risolvere stà nel fatto che l'esecuzione
della macro "Duplica" nel foglio2 dovrebbe ripetere il tutto sul
foglio3, il foglio3 sul foglio4 e così via....

Il mio tentativo funziona solo con il primo foglio perchè credo che la
mia macro faccia riferimento sempre solo al foglio iniziale.

Ringrazio chi può aiutarmi

Cingolo

cucchiaino

unread,
Apr 6, 2009, 11:05:26 PM4/6/09
to
Cingolo scrive:

> Salve,

ciao

evidentemente "forse non tutti sanno che" ...

Activesheet Foglio attivo
Activesheet.Next Foglio successivo a quello attivo
Activesheet.Index Numero d'ordine del foglio attivo
Activesheet.Name Nome del foglio attivo
Sheets(1) Primo foglio
Sheets(Sheets.Count) Ultimo foglio

Il numero d'ordine è quello indicato dalla posizione delle
linguette in basso e cioè non riferito alla relativa "data di nascita"

inoltre

Set f = Sheets.Add ti permette di riferirti al nuovo foglio aggiunto attraverso
la variabile oggetto f


()---cucchiaino
www.riolab.org

Mauro Gamberini

unread,
Apr 7, 2009, 3:57:53 AM4/7/09
to
Il problema che non riesco a risolvere stà nel fatto che l'esecuzione
della macro "Duplica" nel foglio2 dovrebbe ripetere il tutto sul
foglio3, il foglio3 sul foglio4 e così via....
*******************************************

Non mi è chiaro cosa vuoi fare.

Foglio1 crea, ad esempio, il foglio: 20-01-2001
(la data presente in W1 del Foglio1)
e la utilizza come nome per il nuovo
foglio(vedi nota finale)?
E poi copiamo i valori presenti in U8-V56
del Foglio1 pe copiarli in U8.V56 del
foglio 20-01-2001?

Quando eseguirai la macro dal
foglio 20-01-2001, i valori di W1 e di
U8:V56 li prendiamo da questo foglio
per metterli nel nuovo foglio che stiamo
creando? Se sì, domanda: a parte
il Range U8:V56, tutto il resto che si trova
sul foglio padre, lo buttiamo?

Se(se) la condizione è questa:

Public Sub m()

On Error GoTo RigaErrore

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim s As String

Set sh1 = ActiveSheet
Worksheets(sh1.Name).Copy After:=Worksheets(sh1.Name)
Set sh2 = ActiveSheet
With sh2
.Rows.Delete
.Name = _
Replace(CStr( _
sh1.Range("W1").Value), _
"/", "-")
sh1.Range("U8:V56").Copy _
Destination:=.Range("U8:V56")
End With

RigaChiusura:
Set sh1 = Nothing
Set sh2 = Nothing
Exit Sub

RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura

End Sub


Nota.
Non puoi utilizzare "/" (il
separatore standard delle date)
nei nomi che dai ai
tuoi fogli. Nella macro sostituisco
"/" con "-". Vedi tu se ti va bene, altrimenti
fai sapere. Grazie.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/

Cingolo

unread,
Apr 7, 2009, 5:12:34 PM4/7/09
to
Scusami Mauro, provo a spiegarmi meglio...

Ho il foglio denominato "PIPPO". La macro (assegnata ad un pulsante
presente su questo foglio) dovrebbbe fare questo in sequenza:

1) crea una copia identica del foglio "PIPPO" senza modificarne nulla
(questa copia per il momento chiamiamola foglio2)
2) copia il valore della cella W1 (ad esempio il valore "1000") del
foglio "PIPPO" e rinomina foglio2 con questo valore
- (a questo punto avrò 2 fogli identici, uno iniziale denominato
"PIPPO" e l'altro denominato "1000")
3) copia i valori delle celle U8:V56 del foglio "PIPPO" e fa incolla-
valori sulle celle U8:V56 del foglio "1000"

(Il problema per me nasce ora..)
Quando mi sposterò sul foglio "1000" e premerò il pulsante eseguendo
la macro questa dovrebbe:

1) crea una copia identica del foglio "1000" senza modificarne nulla
(questa copia per il momento chiamiamola foglio3)
2) copia il valore della cella W1 (ad esempio il valore "PAPERINO")
del foglio "1000" e rinomina foglio3 con questo valore
- (a questo punto avrò 2 fogli identici, uno iniziale denominato
"1000" e l'altro denominato "PAPERINO")
3) copia i valori delle celle U8:V56 del foglio "1000" e fa incolla-
valori sulle celle U8:V56 del foglio "PAPERINO"


E cosi via........ Quando mi sposterò sul foglio "PAPERINO" e premerò
il pulsante eseguendo la macro questa dovrebbe:

1) crea una copia identica del foglio "PAPERINO" senza modificarne
nulla (questa copia per il momento chiamiamola foglio4)
2) copia il valore della cella W1 (ad esempio il valore "2000") del
foglio "PAPERINO" e rinomina foglio4 con questo valore
- (a questo punto avrò 2 fogli identici, uno iniziale denominato
"PAPERINO" e l'altro denominato "2000")
3) copia i valori delle celle U8:V56 del foglio "PAPERINO" e fa
incolla-valori sulle celle U8:V56 del foglio "2000"

Spero di essere stato più chiaro, ti ringrazio per l'attenzione.

Ciao


On 7 Apr, 09:57, "Mauro Gamberini"

Mauro Gamberini

unread,
Apr 8, 2009, 3:33:11 AM4/8/09
to
Ho il foglio denominato "PIPPO". La macro (assegnata ad un pulsante
presente su questo foglio) dovrebbbe fare questo in sequenza:

1) crea una copia identica del foglio "PIPPO" senza modificarne nulla
(questa copia per il momento chiamiamola foglio2)
2) copia il valore della cella W1 (ad esempio il valore "1000") del
foglio "PIPPO" e rinomina foglio2 con questo valore

************************************************

Il codice postato fa già questo.


- (a questo punto avrò 2 fogli identici, uno iniziale denominato
"PIPPO" e l'altro denominato "1000")
3) copia i valori delle celle U8:V56 del foglio "PIPPO" e fa incolla-
valori sulle celle U8:V56 del foglio "1000"

************************************************

Mi sembra una cosa inutile.
Ho già i valori di Pippo nel foglio 1000.
Cancella questa riga:

.Rows.Delete

nel codice che ti ho postato.


- (a questo punto avrò 2 fogli identici, uno iniziale denominato
"PIPPO" e l'altro denominato "1000")
3) copia i valori delle celle U8:V56 del foglio "PIPPO" e fa incolla-
valori sulle celle U8:V56 del foglio "1000"

(Il problema per me nasce ora..)
Quando mi sposterò sul foglio "1000" e premerò il pulsante eseguendo
la macro questa dovrebbe:

<cut>
***************************************************

Il codice postato fa quanto chiedi.
Domanda: ma tu l'hai provato?
Perchè altrimenti....

Cingolo

unread,
Apr 9, 2009, 4:54:49 PM4/9/09
to
Grazie Mauro!
Ho risolto, mi ero sbagliato...
Grazie mille per il tuo aiuto.

Un saluto,
Cingolo

0 new messages