Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Calcolo matematico in UserForm

Ultimo Aggiornamento: 25/01/2021 20:41
Post: 311
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Senior
2010
OFFLINE
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
Post: 880
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
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
Post: 311
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Senior
2010
OFFLINE
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
Post: 881
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
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
Post: 312
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Senior
2010
OFFLINE
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
Post: 882
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
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
Post: 313
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Senior
2010
OFFLINE
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
Post: 883
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
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
Post: 314
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Senior
2010
OFFLINE
25/01/2021 20:41

[RISOLTO]
Grazie Mario.

Alla prossima.

Gene
STAY SAFE
BG66
Excel 2010
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
calcolo in userform (8 messaggi, agg.: 15/06/2018 12:25)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 23:14. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com