Excel Forum Per condividere esperienze su Microsoft Excel

Calcolo matematico in UserForm

  • Messaggi
  • OFFLINE
    BG66
    Post: 311
    Registrato il: 13/12/2015
    Città: MILANO
    Età: 58
    Utente Senior
    2010
    00 23/01/2021 16:40
    Ciao a tutti.
    Partendo dalla soluzione di Federico460 nel thread:
    www.freeforumzone.com/d/11739900/Calcolo-matematico-in-una-tabella-excel/discussione.aspx


    federico460, 12/01/2021 19:38:


    =MATR.SOMMA.PRODOTTO(--(INDIRETTO("Tabella3[Flag]")="C")*(INDIRETTO("Tabella3[Data]")>=J$14)*(INDIRETTO("Tabella3[Data]")<=J$15)*((INDIRETTO("Tabella3[Entrata]"))-(INDIRETTO("Tabella3[Uscita]"))))




    Vorrei:
    1)riportare questa formula in una userform e precisamente nella textbox "conciliazione".
    2)avere il dato aggiornato in tempo reale (ho impostato su False lo Showmodel).

    E' fattibile?

    Grazie per l'aiuto.


    [Modificato da BG66 23/01/2021 16:46]
    BG66
    Excel 2010
  • OFFLINE
    Marius44
    Post: 880
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 24/01/2021 11:01
    Ciao Gene
    Se non dai maggiori informazioni nessuno ti risponderà perchè la domanda risulta pressochè incomprensibile.
    Penso di esserci arrivato perchè avevo seguito la tua richiesta precedente (a proposito, cliccando sul link non va da nessuna parte).

    Completa il codice del pulsante Calcola così
    Private Sub CommandButton1_Click()
    If TextBox2 = "" Or ComboBox1 = "" Then
    MsgBox "Devi completare l'immissione delle date"
    Exit Sub
    End If
    'add giorno dell'anno: attenzione cambia l'ordine di dateadd
    
    Dim X As Date
    Dim Y As Long
    
    X = Format(TextBox2, "dd/mm/yy")
    Y = ComboBox1
    
    Z = DateAdd("d", Y, X)
    TextBox3 = Z
    
    Set sh1 = Sheets("Mov_Bank")
    ur = sh1.Cells(Rows.Count, 3).End(xlUp).Row
    For i = 6 To ur
      If sh1.Cells(i, 11) = "c" And sh1.Cells(i, 3) >= X And sh1.Cells(i, 3) <= Z Then
        TextBox5 = sh1.Cells(i, 10) - sh1.Cells(i, 9)
      End If
    Next i
    Set sh1 = Nothing
    
    End Sub
    


    Ovviamente provvederai tu a dichiarare correttamente le mie variabili e formattare adeguatamente la risposta in TextBox5.

    Fai sapere. Ciao,
    Mario
  • OFFLINE
    BG66
    Post: 311
    Registrato il: 13/12/2015
    Città: MILANO
    Età: 58
    Utente Senior
    2010
    00 24/01/2021 11:33
    Ciao Mario,
    immagino che questa richiesta di calcolo abbia smosso il Direttore di Banca che è in TE!!

    Nel pomeriggio provo a verificare perchè i valori nella userform non corrispondono a quelli (giusti) che ricava la formula nel foglio "EC_bank".

    PS Per aggiornare il dato devo sempre premere il pulsante Calcola ?

    A presto
    Gene
    [Modificato da BG66 24/01/2021 11:34]
    BG66
    Excel 2010
  • OFFLINE
    Marius44
    Post: 881
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 24/01/2021 11:42
    Ciao
    Nell'esempio precedente vi era una sola "c"
    Correggi il ciclo in questo modo
    ...
    For i = 6 To ur
      If TextBox5 = "" Then TextBox5 = 0
      If sh1.Cells(i, 11) = "c" And sh1.Cells(i, 3) >= X And sh1.Cells(i, 3) <= Z Then
        TextBox5 = CDbl(TextBox5) + sh1.Cells(i, 10) - sh1.Cells(i, 9)
      End If
    Next i
    ...
    


    Cioè ho aggiunto che deve sommare l'eventuale contenuto della TextBox5 e considerarlo 0 (zero) se è vuota.

    Ciao,
    Mario
  • OFFLINE
    BG66
    Post: 312
    Registrato il: 13/12/2015
    Città: MILANO
    Età: 58
    Utente Senior
    2010
    00 24/01/2021 23:10
    Ciao Mario,
    non ci sono ancora.
    Il valore visualizzato nella textbox è 7 il dato atteso sarebbe -7



    In più:
    1) il valore non si aggiorna in tempo reale;
    2) ho provato a inserire il simbolo Euro nella textbox;
     Private Sub TextBox5_AfterUpdate() 
    With Me.TextBox5 
    .Value = Format(.Text, "€ #,##0.00") 
    End With 
    End Sub

    3) ho provato a far aprire la userform quando è attivo il flag;

    -> Risultato dell'intero pomeriggio: fiasco totale!!

    Spero in tue buone nuove.
    Gene
    [Modificato da BG66 24/01/2021 23:12]
    BG66
    Excel 2010
  • OFFLINE
    Marius44
    Post: 882
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 25/01/2021 07:01
    Ciao
    Non leggi i messaggi?
    T'avevo detto di "aggiustare" il codice.
    Modifica la parte dove c'è il ciclo così
    ....
    For i = 6 To ur
      If TextBox5 = "" Then TextBox5 = 0
      If sh1.Cells(i, 11) = "c" And sh1.Cells(i, 3) >= X And sh1.Cells(i, 3) <= Z Then
        TextBox5 = CDbl(TextBox5) + sh1.Cells(i, 10) - sh1.Cells(i, 9)
      End If
    Next i
    TextBox5 = "€. " & TextBox5
    Set sh1 = Nothing
     
    End Sub
    

    Attento che prima di un nuovo calcolo la TextBox5 deve essere vuota.
    Ciao,
    Mario
  • OFFLINE
    BG66
    Post: 313
    Registrato il: 13/12/2015
    Città: MILANO
    Età: 58
    Utente Senior
    2010
    00 25/01/2021 18:36
    Re:
    Ciao Mario,

    Marius44, 25/01/2021 07:01:


    Attento che prima di un nuovo calcolo la TextBox5 deve essere vuota.


    1) Risolto con tasto AGGIORNA:
    Private Sub CommandButton2_Click()
    For i = 5 To 5
    Me.Controls("TextBox" & i).Value = ""
    Next
    Call CommandButton1_Click
    End Sub
    

    2) il valore in € con i due zero dopo la virgola
    NON L'HO RISOLTO COSI 🤬:
    ....
    Next i
    TextBox5 = "€ #,##0.00" & TextBox5
    .......
    


    3) L'apertura della userform con il campo flaggato:
    Risolto con:
    Sub ApriUFFlag()
    Sheets("Mov_Bank").Activate
    If Range("N4") <> FALSO Then
    UserForm1.Show
    End If
    


    Gene



    [Modificato da BG66 25/01/2021 18:38]
    BG66
    Excel 2010
  • OFFLINE
    Marius44
    Post: 883
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 25/01/2021 19:15
    Ciao
    Per quanto attiene i punti 1) e 2) modifica la macro così (fermo l'inizio)
    ....
    ur = sh1.Cells(Rows.Count, 3).End(xlUp).Row
    TextBox5.Value = ""
    For i = 6 To ur
      If TextBox5 = "" Then TextBox5 = 0
      If sh1.Cells(i, 11) = "c" And sh1.Cells(i, 3) >= X And sh1.Cells(i, 3) <= Z Then
        TextBox5 = CDbl(TextBox5) + sh1.Cells(i, 10) - sh1.Cells(i, 9)
      End If
    Next i
    TextBox5 = "€." & Format(TextBox5, "#,###.00")
    Set sh1 = Nothing
     
    End Sub

    Ciao,
    Mario
  • OFFLINE
    BG66
    Post: 314
    Registrato il: 13/12/2015
    Città: MILANO
    Età: 58
    Utente Senior
    2010
    00 25/01/2021 20:41
    [RISOLTO]
    Grazie Mario.

    Alla prossima.

    Gene
    STAY SAFE
    BG66
    Excel 2010