Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Ringo,
Riconoscendo una deplorevole mancanza di pazienza da parte mia, e non desiderando che la notte passi senza rettificare la situazione, verifica se il seguente codice soddisfa le tue esigenze:
In un modulo standard, incolla:
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH_Festività As Worksheet, SH_Generalità As Worksheet
Dim rngMesi As Range
Dim dValGeneralità As Double
Dim iYear As Long
Dim i As Long
Set WB = ThisWorkbook
With WB
Set SH_Festività = .Sheets("Festività Svizzere")
Set SH_Generalità = .Sheets("Generalità")
End With
With SH_Festività
Set rngMesi = .Range("H2:S2")
iYear = Year(.Range("B2").Value)
End With
dValGeneralità = SH_Generalità.Range("D2").Value
With rngMesi
For i = 1 To .Cells.Count
.Cells(i).Value = DateSerial(iYear, i, 1)
.Cells(2, i).Value = Evaluate( _
"=SUMPRODUCT(--(MONTH($D$2:$D$43)=MONTH(" _
& .Cells(i).Address(0, 0) & ")),$F$2:$F$43)")
.Cells(3, i).Value = .Cells(2, i).Value * dValGeneralità
Next i
.NumberFormat = "mmmm"
.Offset(2).NumberFormat = """fr."" #,##0.00"
End With
End Sub
'<<=========
Nota bene:
- Ho cancellato il tuo codice nel modulo di codice del foglioFestività Svizzere in quanto, a mio modesto parere, solo il codice di evento dovrebbe trovarsi in quel modulo. A questo proposito vedi l'ottimo articolo wiki di Mauro Gamberini:
Excel - Dove e come inserire il codice Visual Basic - VBA (Update)
- Per provare il mio codice, ho creato un nuovo foglio denominato Generalità e, nella sua cella D3 ho inserito la funzione =PI.GRECO()
Potresti scaricare il mio file di prova Ringo20180619.xlsm
===
Regards,
Norman