Moderatori: Anthony47, Flash30005
Sub Lunazione(nRow As Long, nCol As Long)
Dim dData As Date
Dim i As Long
Dim dCorr As Long '+++
dData = Sheets("CALENDARIO").Cells(nRow, nCol)
If dData < 60 Then dCorr = 1 Else dCorr = 0 '+++
dData = dData + dCorr '+++
' La Luna non si calcola nei giorni del mese successivo
If month(dData) <> month(Sheets("CALENDARIO").Range("PRIMODELMESE") + 2) Then Exit Sub 'MMM
' Trova per la data la Luna relativa
Dim c As Long
c = Range("FASILUNARI").Column
For i = Range("FASILUNARI").Row To Range("FASILUNARI").Row + Range("FASILUNARI").Rows.Count - 1
If Sheets("CALENDARIO").Cells(i, c) = dData - dCorr Then 'MMM
nLuna = Sheets("CALENDARIO").Cells(i, c + 1)
' trovata una luna (-1 indica "non cambiamento")
'etcetera etcetera
Anthony47 ha scritto:La posizione delle immagini viene "aggiustata" appena il foglio viene "ricalcolato", prima vale la posizione in cui le immagini si trovavano al momento del salvataggio.
Se metti in qualche posizione del foglio la formula =OGGI() allora il foglio si calcolera' all'apertura del file e la posizione dovrebbe risultare corretta.
Quanto al problema riscontrato su Gennaio e Febbraio, questo deriva da una discrepanza che del VBA rispetto a Excel:
-per Excel, il giorno "1" del sistema di calcolo delle date corrisponde al 1° genn 1900 e Feb 1900 viene considerato bisestile (mentre non lo fu). Questo comportamento fu inserito "per compatibilita' col Lotus 123" (che erroneamente considerava Feb 1900 bisestile)
-per il vba il giorno "1" e' 31-dic-1899 e Feb 1900 non e' bisestile; col risultato che per gen e feb del 1900 i calcoli fatti da Excel sono diversi da quelli fatti dal vba
Per convivere con questa discrepanza ho aggiunto /modificato alcune istruzioni nella Sub Lunazioni, come segue:Le righe marcate +++ sono aggiunte; quelle marcate MMM sono modificate
- Codice: Seleziona tutto
Sub Lunazione(nRow As Long, nCol As Long)
Dim dData As Date
Dim i As Long
Dim dCorr As Long '+++
dData = Sheets("CALENDARIO").Cells(nRow, nCol)
If dData < 60 Then dCorr = 1 Else dCorr = 0 '+++
dData = dData + dCorr '+++
' La Luna non si calcola nei giorni del mese successivo
If month(dData) <> month(Sheets("CALENDARIO").Range("PRIMODELMESE") + 2) Then Exit Sub 'MMM
' Trova per la data la Luna relativa
Dim c As Long
c = Range("FASILUNARI").Column
For i = Range("FASILUNARI").Row To Range("FASILUNARI").Row + Range("FASILUNARI").Rows.Count - 1
If Sheets("CALENDARIO").Cells(i, c) = dData - dCorr Then 'MMM
nLuna = Sheets("CALENDARIO").Cells(i, c + 1)
' trovata una luna (-1 indica "non cambiamento")
'etcetera etcetera
Non pensi di modificare le date 25 Aprile e 2 Giugno, che in passato non erano festivi? E 11 feb e 19 mar, Ascensione e Corpusdomini che in passato erano festivi? Tanto per complicarti la vita, eh he...
Ciao
@Raimea: Quell'errore e' tipico di quando il file viene aperto in Modalita' protetta e poi se ne abilita la modifica.
Salva il file in una directory che poi dichiari "attendibile" e non avrai problemi:
-Menu /File /Opzioni /Centro protezione, Impostazione centro protezione; Percorsi attendibili, Aggiungi nuovo percorso.
Anthony47 ha scritto:@Raimea: Quell'errore e' tipico di quando il file viene aperto in Modalita' protetta e poi se ne abilita la modifica.
Salva il file in una directory che poi dichiari "attendibile" e non avrai problemi:
-Menu /File /Opzioni /Centro protezione, Impostazione centro protezione; Percorsi attendibili, Aggiungi nuovo percorso.
@Alessandro: mi spiace averti portato a lavorare sulle vecchie festivita' passandoti informazioni male interpretabili:
io intendevo che in passato giorni quali 11 feb, 19 Marzo, l'Ascensione e i Corpusdomini (e altri) erano giorni festivi; poi piano piano sono o diventati giorni feriali o la festivita' e' stata spostata alla domenica. Insomma e' sbagliata l'associazione 11 feb = Ascensione e 19 mar = Corpusdomini
Ciao
Certamente che Sì; lo inseriro io nell'elenco, come link a questa discussione.A proposito ho notato che c'è una sezione chiamata "i vostri lavori", posso partecipare con questo file ?
Anthony47 ha scritto:Certamente che Sì; lo inseriro io nell'elenco, come link a questa discussione.A proposito ho notato che c'è una sezione chiamata "i vostri lavori", posso partecipare con questo file ?
Quanto al problema segnalato da Raimea, in realta' potrebbe anche dipendere da una errata gestione nelle macro dell'indirizzamento dei fogli (nei Moduli di Classe, dove si mettono le macro di evento tipo Worksheet_Change, meglio non usare il nome del foglio; in quelle che potrebbero andare in esecuzione quando il file non e' attivo bisogna invece usare o il CodeName oppure indirizzare in modo "completo" - File + Foglio -; es ThisWorkbook.Sheets("NomeFoglio").Range(etcetc)]; faro' una revisione quando il lavoro e' pronto.
Ciao
Anthony47 ha scritto:Mi sono permesso di modificare il file di Alessandro in due punti marginali:
-modificato la Sub Worksheet_Calculate, per evitare di eseguirla nel caso che il foglio attivo non sia il foglio Calendario
-aggiunta una Sub Worksheet_Change, in modo da poter incrementare /decrementare a volonta' le date tramite la casella di selezione dei mesi: prima erano limitati all'intervallo 1-12, ora incrementando oltre Dicembre si passa a Gennaio dell'anno successivo; idem decrementando: da Gennaio si passa a Dicembre dell'anno prima.
Il cuore dello sviluppo (creazione del calendario e inserimento degli elementi caratteristici) e' invece quello ideato da Alessandro.
Questa versione del file e' scaricabile qui: https://www.dropbox.com/s/jvz5igekpo6kn ... .xlsm?dl=0
Ciao
Anthony47 ha scritto:Mah... tra le possibili aggiunte le opzioni "Accadde oggi", "Nati oggi", "I Santi del giorno". Ovviamente fatta passando la palla a una finestra InternetExplorer adeguatamente indirizzata.
Torna a Applicazioni Office Windows
Sincronizzazione Google Outlook calendario=no va!!!! Autore: mp420 |
Forum: Software Windows Risposte: 1 |
Foglio presenze in stile calendario perpetuo: bloccare una c Autore: BSara |
Forum: Applicazioni Office Windows Risposte: 7 |