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

Data automatica su fogli e "linguetta"

457 views
Skip to first unread message

Gli Educatori.it

unread,
Jun 19, 2011, 5:36:12 AM6/19/11
to
Dovrei fare una serie di fogli dove ognuno rappresenta un giorno della
settimana.
C'è un modo per far inserire la data in automatico su tutti i 30 (o
31) fogli nella cella corrispondete?
Ed esiste un modo per far sì che la stessa data vada in automatico
sulla "linguetta" quella dove di solito appare Foglio 1 Foglio 2
Foglio 3 etc?
Grazie!

Mauro Gamberini

unread,
Jun 20, 2011, 4:26:44 AM6/20/11
to
"Gli Educatori.it" ha scritto nel messaggio
news:fee96494-673f-4b73...@16g2000yqy.googlegroups.com...

Dovrei fare una serie di fogli dove ognuno rappresenta un giorno della
settimana.

C'� un modo per far inserire la data in automatico su tutti i 30 (o


31) fogli nella cella corrispondete?

Ed esiste un modo per far s� che la stessa data vada in automatico


sulla "linguetta" quella dove di solito appare Foglio 1 Foglio 2
Foglio 3 etc?
Grazie!

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

Questa macro(da copia/incollare in un modulo standard)
crea tanti fogli quanti i giorni del mese
e li rinomina g-m-yyyy (non possiamo utilizzare / come
separatore). Chiede che tu inserisca il mese e l'anno
nel formato indicato nella InputBox:

Public Sub m()

Dim d As Date
Dim lDay As Long
Dim v As Variant
Dim lng As Long

v = Application.InputBox("Inserire il mese formato mm/yy")
If v = False Or v = "" Then Exit Sub
d = CDate("01/" & v)
lDay = Day(DateSerial(Year(d), Month(d) + 1, 0))

For lng = 1 To lDay
ThisWorkbook.Worksheets.Add
after:=ThisWorkbook.Worksheets(Worksheets.Count)
ActiveSheet.Name = lng & "-" & Month(d) & "-" & Year(d)
Next

End Sub

Questo evento invece, da copia/incollare nel modulo di codice
di ThisWorkbook(versioni pre 2010) o di Questa_cartella_di_ lavoro
(versione 2010) ti porter� nel foglio con la data odierna all'apertura:

Private Sub Workbook_Open()
Dim s As String
s = Format(Date, "d-m-yyyy")
Me.Worksheets(s).Select
End Sub

Prova un po'. Se non hai mai utilizzato
il vb di Excel, vedi qui:
http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx

---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Gli Educatori.it

unread,
Jun 20, 2011, 11:35:09 AM6/20/11
to
On 20 Giu, 10:26, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> "Gli Educatori.it"  ha scritto nel messaggionews:fee96494-673f-4b73...@16g2000yqy.googlegroups.com...

>
> Dovrei fare una serie di fogli dove ognuno rappresenta un giorno della
> settimana.
> C'è un modo per far inserire la data in automatico su tutti i 30 (o

> 31) fogli nella cella corrispondete?
> Ed esiste un modo per far sì che la stessa data vada in automatico
> (versione 2010) ti porterà nel foglio con la data odierna all'apertura:

>
> Private Sub Workbook_Open()
>     Dim s As String
>     s = Format(Date, "d-m-yyyy")
>     Me.Worksheets(s).Select
> End Sub
>
> Prova un po'. Se non hai mai utilizzato
> il vb di Excel, vedi qui:http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx
>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

Santissimo Signore! Ma è una cosa meravigliosa!

Come fargli però copiare il contenuto di un foglio? Cioè, in questo
modo mi appaiono 30 bellissimi fogli bianchi.
Non c'è un modo per farli riportare in tutti il contenuto delle celle
A1 N35? O fargli esattamente ricopiare il contenuto del foglio 1?
Grazie

Andrea.9

unread,
Jun 20, 2011, 11:48:48 AM6/20/11
to
> Grazie- Nascondi testo citato
>
> - Mostra testo citato -

seleziona tutti il contenuto del foglio 1 (con il quadratino sopra la
riga 1 e a sinistra della colonna A) quindi copia.
seleziona contemporaneamente tutti i fogli destinazione cliccando il
primo e l'ultimo con tasto Shift.
clicca nuovamente nei fogli cosi' selezionati il pulsantino in alto a
sinistra, quindi incolla.
ciao
andrea

Gli Educatori.it

unread,
Jun 20, 2011, 12:06:09 PM6/20/11
to

Ok Andrea, può essere un modo......
Ora manca solo riuscire a mettere la data in automatico nelle cella
unita A......

Mauro Gamberini

unread,
Jun 20, 2011, 12:14:23 PM6/20/11
to
Santissimo Signore! Ma � una cosa meravigliosa!

Come fargli per� copiare il contenuto di un foglio? Cio�, in questo


modo mi appaiono 30 bellissimi fogli bianchi.

Non c'� un modo per farli riportare in tutti il contenuto delle celle


A1 N35? O fargli esattamente ricopiare il contenuto del foglio 1?

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


Public Sub m()

Dim d As Date
Dim lDay As Long
Dim v As Variant
Dim lng As Long

v = Application.InputBox("Inserire il mese formato mm/yy")
If v = False Or v = "" Then Exit Sub
d = CDate("01/" & v)
lDay = Day(DateSerial(Year(d), Month(d) + 1, 0))

For lng = 1 To lDay

ThisWorkbook.Worksheets("Foglio1").Copy _
After:=ThisWorkbook.Worksheets(Worksheets.Count)


ActiveSheet.Name = lng & "-" & Month(d) & "-" & Year(d)
Next

End Sub


--
---------------------------
Mauro Gamberini

Mauro Gamberini

unread,
Jun 20, 2011, 12:16:34 PM6/20/11
to
> Ora manca solo riuscire a mettere la data in automatico nelle cella
>unita A......

Non ho capito questa cosa.

--
---------------------------
Mauro Gamberini

Gli Educatori.it

unread,
Jun 20, 2011, 2:15:11 PM6/20/11
to
On 20 Giu, 18:14, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Santissimo Signore! Ma è una cosa meravigliosa!
>
> Come fargli però copiare il contenuto di un foglio? Cioè, in questo

> modo mi appaiono 30 bellissimi fogli bianchi.
> Non c'è un modo per farli riportare in tutti il contenuto delle celle

> A1 N35? O fargli esattamente ricopiare il contenuto del foglio 1?
> ****************************************
>
> Public Sub m()
>
>     Dim d As Date
>     Dim lDay As Long
>     Dim v As Variant
>     Dim lng As Long
>
>     v = Application.InputBox("Inserire il mese formato mm/yy")
>     If v = False Or v = "" Then Exit Sub
>     d = CDate("01/" & v)
>     lDay = Day(DateSerial(Year(d), Month(d) + 1, 0))
>
>     For lng = 1 To lDay
>         ThisWorkbook.Worksheets("Foglio1").Copy _
>             After:=ThisWorkbook.Worksheets(Worksheets.Count)
>         ActiveSheet.Name = lng & "-" & Month(d) & "-" & Year(d)
>     Next
>
> End Sub
>
> --
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

Allora.......
mi appare prima una finestrella con
Errore di run-time '9':
Indice non incluso nell'intervallo

clicco su debug e mi evidenzia
Me.Worksheets(s).Select nel Thisworkbook

Poi viene fuori Indice non ilcluso nell'inrtrvallo

Gli Educatori.it

unread,
Jun 20, 2011, 2:51:36 PM6/20/11
to
> Allora.......
> mi appare prima una finestrella con
> Errore di run-time '9':
> Indice non incluso nell'intervallo
>
> clicco su debug e mi evidenzia
> Me.Worksheets(s).Select nel Thisworkbook
>
> Poi viene fuori Indice non ilcluso nell'inrtrvallo

Il primo avviso esce comunque...
il secondo era perchè il foglio era rinominato in altro modo

Gli Educatori.it

unread,
Jun 20, 2011, 2:57:35 PM6/20/11
to

Risolto.....C'era solo il foglio1...inserendo il 2 ed i 3 l'errore
non appare....


Rimane solo il "problema" della stessa data nelle celle.....

Gli Educatori.it

unread,
Jun 20, 2011, 2:47:18 PM6/20/11
to
On 20 Giu, 18:16, "Mauro Gamberini"

La stessa data dovrebbe apparire in una cella, che nel mio caso
comprende le colonne da A a N come unione celle.....

Andrea.9

unread,
Jun 20, 2011, 5:29:31 PM6/20/11
to

un modo potrebbe essere questo:
inserisci ---> nome ---> definisci
ti si apre una finestra
dai un nome, ad esempio: nomecartella
nello spazio della formula inserisci (al posto di quello che trovi)
questa formula:
=INFO.CARTELLA.DI.LAVORO(38)
quindi dai ok
nella cella dove vuoi la data inserisci:
=nomecartella
la scocciatura e' che la prima volta devi entrare nella cella e
confermarla con invio per aggiornare la data.
sicuramente c'e' un modo piu' efficace in VBA.
ciao
andrea

Mauro Gamberini

unread,
Jun 21, 2011, 2:44:29 AM6/21/11
to
"Gli Educatori.it" ha scritto nel messaggio
news:a62884d0-e1c7-4a5a...@28g2000pry.googlegroups.com...

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

Public Sub m()

Dim d As Date
Dim lDay As Long
Dim v As Variant
Dim lng As Long

v = Application.InputBox("Inserire il mese formato mm/yy")
If v = False Or v = "" Then Exit Sub
d = CDate("01/" & v)
lDay = Day(DateSerial(Year(d), Month(d) + 1, 0))

For lng = 1 To lDay

ThisWorkbook.Worksheets("Foglio1").Copy _
After:=ThisWorkbook.Worksheets(Worksheets.Count)

With ActiveSheet


.Name = lng & "-" & Month(d) & "-" & Year(d)

.Range("A1").Value = .Name
End With
Next

End Sub

Sostituisci A1 con il riferimento alla cella dove vuoi la data.

---------------------------
Mauro Gamberini

Gli Educatori.it

unread,
Jun 21, 2011, 4:37:56 AM6/21/11
to
> Public Sub m()
>
>     Dim d As Date
>     Dim lDay As Long
>     Dim v As Variant
>     Dim lng As Long
>
>     v = Application.InputBox("Inserire il mese formato mm/yy")
>     If v = False Or v = "" Then Exit Sub
>     d = CDate("01/" & v)
>     lDay = Day(DateSerial(Year(d), Month(d) + 1, 0))
>
>     For lng = 1 To lDay
>         ThisWorkbook.Worksheets("Foglio1").Copy _
>             After:=ThisWorkbook.Worksheets(Worksheets.Count)
>         With ActiveSheet
>             .Name = lng & "-" & Month(d) & "-" & Year(d)
>             .Range("A1").Value = .Name
>         End With
>     Next
>
> End Sub
>
> Sostituisci A1 con il riferimento alla cella dove vuoi la data.

Succede solo una cosa "strana": facendo la prova con giugno 2011, fino
al 12/6 inverte il giorno col mese, ovvero dal 1 giugno al 12 giugno
la data appare 6 gennaio invece che 1/6; 6 febbraio invece che 2/6 etc
fino al 6 dicembre invece che 12/6.
Dal 13 in poi appare esatto......
Per il resto, GENIALE!!!!!!

Mauro Gamberini

unread,
Jun 21, 2011, 1:30:28 PM6/21/11
to

Succede solo una cosa "strana": facendo la prova con giugno 2011, fino
al 12/6 inverte il giorno col mese, ovvero dal 1 giugno al 12 giugno
la data appare 6 gennaio invece che 1/6; 6 febbraio invece che 2/6 etc
fino al 6 dicembre invece che 12/6.
Dal 13 in poi appare esatto......
Per il resto, GENIALE!!!!!!

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

Non � una cosa strana, � un errore mio,
manca un cast.

Modifica questa riga:

.Range("A1").Value = .Name

cos�:

.Range("A1").Value = CDate(.Name)

Scusa e grazie per la pazienza.

Gli Educatori.it

unread,
Jun 21, 2011, 5:43:41 PM6/21/11
to
> *****************************************
>
> Non è una cosa strana, è un errore mio,

> manca un cast.
>
> Modifica questa riga:
>
>              .Range("A1").Value = .Name
> così:

>
>             .Range("A1").Value = CDate(.Name)
>
> Scusa e grazie per la pazienza.
>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

Scusa? Grazie per la pazienza? Dici a me?
Amcio, io non so nemmeno come ringraziarti per l'aiuto enorme che mi
hai dato e tu chiedi scusa a me?????
Sei un grande!!!!

0 new messages