Reinserire i dati n...
 
Notifiche
Cancella tutti

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.

Reinserire i dati nella userform con MsgBox

3 Post
2 Utenti
0 Reactions
13 Visualizzazioni
Forum 1
(@vrestu)
Post: 18
Eminent Member
Avviatore di Topic
 

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.

 

 

Versione di Excel
Sistema operativo
 
Postato : 01/11/2025 19:50
Alexps81
(@alexps81)
Post: 39
Eminent Member
 

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

 
Postato : 01/11/2025 22:05
Forum 1
(@vrestu)
Post: 18
Eminent Member
Avviatore di Topic
 

@alexps81 

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.

 
Postato : 01/11/2025 22:52
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy