
ActiveDocument.campomodulo.Value? |
Option Explicit
Sub calcola_importo()
Dim data1 As Date, data2 As Date, giorni_rimanenti As Integer, giorni_mese_corrente As Integer
Dim costo_periodo As Currency, importo_mese_corrente As Currency
Dim s As String
data1 = CDate(ActiveDocument.FormFields(1).result)
data2 = DateSerial(Year(data1), Month(data1) + 1, 0)
giorni_rimanenti = DateDiff("d", data1, data2)
giorni_mese_corrente = Day(DateSerial(Year(data1), Month(data1) + 1, 0))
costo_periodo = ActiveDocument.FormFields("mesestd").result
importo_mese_corrente = costo_periodo / giorni_mese_corrente * giorni_rimanenti
s = "La data iniziale è " & data1 & "." & vbCrLf
s = s & "Il mese di " & Format(Month(data1), "mmmm") & " ha " & giorni_mese_corrente & " giorni." & vbCrLf
s = s & "Da oggi rimangono " & giorni_rimanenti & " giorni alla fine del mese." & vbCrLf
s = s & "Il costo del periodo è euro " & FormatNumber(costo_periodo, 2)
s = s & ", quindi l'importo del mese corrente" & vbCrLf
s = s & "per i rimanenti " & giorni_rimanenti & " giorni è pari a euro " & FormatNumber(importo_mese_corrente, 2)
MsgBox s, vbInformation + vbOKOnly, "Calcolo eseguito"
End Sub |
Public Sub Prova2()
Dim DataPrimoDelMese As Date
Dim DataInizioPeriodo As Date
Dim DataFineMese As Date
Dim mese As Integer
Dim anno As Integer
Dim RataMese As Currency
Dim RataParziale As Currency
Dim NumeroGiorni As Integer
DataInizioPeriodo = ActiveDocument.FormFields("datainizio").Result
RataMese = ActiveDocument.FormFields("mesestd").Result
anno = Year(DataInizioPeriodo)
mese = (Month(DataInizioPeriodo) Mod 12) + 1
DataPrimoDelMese = CDate("01/" & Month(DataInizioPeriodo) & "/" & Year(DataInizioPeriodo))
If mese = 1 Then anno = anno + 1
DataFineMese = CDate("01/" & mese & "/" & anno)
DataFineMese = DataFineMese - 1
ActiveDocument.FormFields("DataFine").Result = DataFineMese
NumeroGiorni = DataFineMese - DataInizioPeriodo ' calcolo numero di giorni da pagare
RataParziale = RataMese * NumeroGiorni / (DataFineMese - DataPrimoDelMese)
ActiveDocument.FormFields("costoperiodo").Result = Format(Round(RataParziale, 2), , "0,00")
ActiveDocument.FormFields("PrimoMeseSuccessivo").Result = CDate("01/" & mese & "/" & anno)
End Sub |
DateSerial(anno, mese + 1, 0)
Option Explicit
Public Sub Prova3VF()
Dim DataPrimoDelMese As Date
Dim DataInizioPeriodo As Date
Dim DataFineMese As Date
Dim mese As Integer
Dim anno As Integer
Dim RataMese As Currency
Dim RataParziale As Currency
Dim NumeroGiorni As Integer
DataInizioPeriodo = ActiveDocument.FormFields("datainizio").Result
RataMese = ActiveDocument.FormFields("mesestd").Result
DataPrimoDelMese = DateSerial(Year(DataInizioPeriodo), Month(DataInizioPeriodo), 1)
DataFineMese = DateSerial(Year(DataInizioPeriodo), Month(DataInizioPeriodo) + 1, 0)
ActiveDocument.FormFields("DataFine").Result = DataFineMese
NumeroGiorni = DateDiff("d", DataInizioPeriodo, DataFineMese)
RataParziale = RataMese * NumeroGiorni / DateDiff("d", DataPrimoDelMese, DataFineMese)
ActiveDocument.FormFields("costoperiodo").Result = Format(Round(RataParziale, 2), , "0,00")
ActiveDocument.FormFields("PrimoMeseSuccessivo").Result = DateSerial(Year(DataInizioPeriodo), Month(DataInizioPeriodo) + 1, 1)
End Sub |
