La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Ciao a tutti volevo chiedere un aiuto su un foglio che utilizzo per calcolare la data di scadenza dell’assicurazione in base ai mesi di sospensione. Nella userform metto la data di blocco e di sblocco dell’assicurazione, e voglio fare in modo che in caso il tempo tra le due date sia superiore ai mesi di sospensione indicate sulla userform mi appaia un MSGBox che mi consenta di accettare i valori inseriti cliccando su “SI”, oppure mi rimandi sulla userform per modificare le due date in caso clicco su “NO”. Nel caso in esempio dovrebbe segnalarmi che i mesi di sospensione da me scelti sono superiori a quanto consentito.
Ciao, prova un approccio del genere. Ci sarebbe da sistemare il controllo sulle date ed importi ma quella è un'altra storia:
Private Sub CommandButton1_Click()
Dim inizio As Date, blocco As Date, sblocco As Date
Dim scadenza As Date, nuovaScadenza As Date
Dim mesiSospensione As Double, peridoBlocco As Long
Dim importo As Double, durata As Long, costo As Double
Dim valori As Variant
Dim i As Long
On Error GoTo ErroreInput
importo = CDbl(TextBox1.Value)
mesiSospensione = CDbl(TextBox2.Value)
blocco = CDate(TextBox3.Value)
sblocco = CDate(TextBox4.Value)
inizio = CDate(TextBox6.Value)
On Error GoTo 0
peridoBlocco = DateDiff("m", blocco, sblocco)
If peridoBlocco > mesiSospensione Then
If MsgBox("Superati i mesi di sospensione." & String(2, vbCrLf) & _
"Premere SI per proseguire con i dati inseriti.," & String(2, vbCrLf) & _
"Premere NO per rimanere modificare.", vbYesNo + vbQuestion, "Conferma") = vbNo Then
Exit Sub
End If
End If
scadenza = DateAdd("yyyy", 1, inizio)
nuovaScadenza = scadenza + (sblocco - blocco)
durata = nuovaScadenza - inizio
costo = importo / durata * 365
valori = Array(importo, inizio, scadenza, mesiSospensione, blocco, sblocco, nuovaScadenza, durata, costo)
For i = 2 To 10
Range("B" & i).Value = valori(i - 2)
Next i
Unload Me
Exit Sub
ErroreInput:
MsgBox "Verifica che tutti i valori inseriti siano numerici e le date valide.", vbExclamation, "Errore dati"
End Sub
Se servono spiegazioni sul codice chiedi pure.
Ciao
Ciao, l'ho provato velocemente e sembra funzionare tutto perfettamente grazie. Per quanto riguarda il codice lo studierò con calma ed eventualmente ti farò sapere per eventuali spiegazioni.
