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/
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
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
Ok Andrea, può essere un modo......
Ora manca solo riuscire a mettere la data in automatico nelle cella
unita A......
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
Non ho capito questa cosa.
--
---------------------------
Mauro Gamberini
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
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.....
La stessa data dovrebbe apparire in una cella, che nel mio caso
comprende le colonne da A a N come unione celle.....
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
****************************************************
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
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!!!!!!
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.
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!!!!