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.

[Risolto] Reinserire i dati nella userform con MsgBox

6 Post
3 Utenti
0 Reactions
156 Visualizzazioni
Forum 1
(@vrestu)
Post: 20
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: 41
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: 20
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
Forum 1
(@vrestu)
Post: 20
Eminent Member
Avviatore di Topic
 

@alexps81 

Ciao come ti dicevo la tua soluzione risponde perfettamente alle mie esigenze. Per quanto riguarda il codice per quanto io non sia un esperto è abbastanza chiaro.

Grazie

 
Postato : 02/11/2025 08:03
Forum 4
(@lukereds)
Post: 51
Trusted Member
 

ciao,

sarebbe sufficiente una formula e/o formattazione condizionale per segnalare il superamento della soglia

 
Postato : 02/11/2025 10:46
Forum 1
(@vrestu)
Post: 20
Eminent Member
Avviatore di Topic
 

@lukereds 

Ciao, l'idea era quella di una correzione immediata senza uscire dalla userform

Questo post è stato modificato 1 mese fa da vrestu
 
Postato : 02/11/2025 16:35
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