› Sviluppare funzionalita su Microsoft Office con VBA › calcoli tra valori in textbox
-
AutoreArticoli
-
Buonasera a tutti. Dovrei per i miei clienti creare un foglio di excel dove loro inseriranno delle misure,lunghezza e larghezza ,poi ,in un altra textbox verra calcolata l'area. Fino qui ci sono quasi.Il problema nasce che quando inseriscono misure non producibili vorrei un msgbox che li avverte che hanno superato il limite massimo e, allo stesso modo non possono inserire in larghezza un valore minore di 40 cm .
Vi ringrazio anticipatamente per l'aiuto
Buon pomeriggio, @veleno;
allega un File, senza Dati sensibili, con alcuni Record significativi già inseriti e chiarisci ciò che desideri ottenere.Giuseppe
Buonasera Giuseppe e grazie per la celere risposta .Non ti nego la difficolta per scrivere qualche stringa intanto ho allegato un file excel molto intuibile ti giuro non riesco ad andare avanti.
Allegati:
You must be logged in to view attached files.Buona giornata, @veleno;
nel File non vedo alcun Codice VBA ne vincoli nell'inserimento dei calcoli.Quello che posso fare è solo fornirti qualche consiglio:
- Tabella con vincoli per indicare il "limite massimo" dei Valori proponibili e il "Prezzo"; molto probabilmente già presente nel tuo File originale.
- Quello che credo aiuterebbe i tuoi Clienti potrebbe essere una UserForm come da immagine in allegato; non è certo indispensabile ma è un po più professionale.Oltre non saprei proprio come poterti aiutare se non ricordarti che i Valori inseriti in TextBox non sono Valori numerici ma Stringhe e come tali vanno riproposte in un Formato gestibile nei calcoli.
Buon Lavoro.
Giuseppe
Allegati:
You must be logged in to view attached files.Poi, ovviamente, se hai problemi assieme possiamo approfondire.
Giuseppe
Buongiorno Giuseppe questa e' la versione embrionale.
Nelle textbox dei valori di lunghezza e larghezza che moltiplicati danno l'area che moltiplicata per 77.81 € danno il prezzo.Fino qui abbastanza facile. Poi ho aggiunto delle combo box che riepilogassero tutte le misure disponibili ma qui arrivano i primi sintomi di ignoranza.
Come puoi vedere a sinistra del foglio ci sono 2 elenchi 1 con misure ripetute ed il secondo,piu in basso, piu corto dove ho solo rimosso i duplicati qui nel ciclo for delle combobox ho provato a fargli leggere quei valori ma non funziona cioe mi rida' tutti i valori non in ordine .
Infine dovrei aggiungere altre condizioni per esempio se metto un valore nella textbox1(larghezza) non compreso fra tutti quelli della colonna A devo aggiungere un sovraprezzo del 25% ed anche nella colonna B (lunghezza) se supero una lunghezza di 4mt (400) deve essere aggiunto il 25% .Spero di essere stato chiaro ti prego illuminami
Allegati:
You must be logged in to view attached files.Buon pomeriggio, @veleno;
oggi giornata di Gare di Moto GP e SBK, domani darò uno sguardo al tuo File e ci sentiamo in ogni caso ho fiducia che qualche altro Utente possa esserti d'aiuto più rapidamente.Buon fine settimana.
Giuseppe
Ho aggiunto 2 combobox con riferimento alle righe 22 27 commentando quelle di prima ma non funziona
Private Sub ComboBox3_Change()
Dim i As Integer
For i = 22 To 27
TextBox1.Text = Val(ComboBox1.Value)
ComboBox1.AddItem Cells(i, 1)
Next i
End SubPrivate Sub ComboBox4_Change()
Dim a As Integer
For a = 22 To 29
TextBox2.Text = Val(ComboBox2.Value)
ComboBox2.AddItem Cells(a, 2)
Next a
End SubBuon pomeriggio, @veleno;
sono piuttosto perplesso sull'impostazione della tua struttuta, ma con le Mail diventa laborioso arrivare ad una possibile soluzone.Credo che sarebbe molto più produttiva una chiacchierata in Skype con l'impegno formale di condividere in Forum eventuali sviluppi.
Se lo ritieni utile e opportuno mandami il tuo NickName in Skype.
Buon fine settimana.
Giuseppe
Buona giornata, @veleno;
ti anticipo quali sono le mie perplessità.Nel File in allegato:
- ho dovuto ridefinire i ComboBox1 e ComboBox2
- ho previsto un allert nel caso in cui ComboBox non sia valorizzato
- ho inserito un avvertimento, + 25%, nel caso in cui il valore ComboBox sia fuori range
- non sono intervenuto sul calcolo dell'extra costo in quanto non so come gestire un fuori range sia della lunghezza che della larghezzaBuon Lavoro.
Giuseppe
Allegati:
You must be logged in to view attached files.Buonasera Giuseppe sono riuscito a vedere il lavoro fatto.Beato che che mastichi sta cosa . La combo box e' una cosa pratica ma quando si hanno misure che vanno al di fuori di quelle elencate quindi l'operatore va sulla text e scrive per esempio 80 cm in larghezza (che non e' riportato nella lista ) automaticamente al prezzo 77.81 va aggiunto il 25%,
altresi' modo qualora il cliente lo volesse lungo 450 cm(textbox2) e' semore considerato un fuori misura va aggiunto il 25%.
Comunque per video conferenze sarei propenso pure perche cerco un insegnante di vba copiando ed incollando misa che non vado da nessuna parte fammi sapere per il disturbo grazie
Buon pomeriggio, @veleno;
nessun disturbo, ti ho proposto una chiacchierata in Skype in quanto ci sono diverse cose che credo vadano riviste.
Prova ad immaginare un Cliente che compila un nuovo Ordine, potrebbe tranquillamente modificare le tabelle relative alle dimensioni.
Le Tabelle vanno inserite in un Foglio di lavoro protetto da password e nascosto con protezione.
Inoltre rimango fermamente convinto che una maschera di inserimento Dati sarebbe molto più professionale.
Un discorso è un Cliente che deve compilare un prospetto altra cosa se ha un UserForm che, oltre a presentarsi in modo più accattivante è personalizzato da Dati relativi al Cliente stesso.Se desideri un contatto in Skype fammi sapere tempi e modi a te più favorevoli; in questo caso mi serve, magari privatamente, il tuo Nickname di Skype.
Per quanto concerne:
... cerco un insegnante di vba ...
sono un autodidatta ma non ho problemi a condividere quel poco che conosco.
Buon Lavoro.
Giuseppe
Ma sono in paradiso o cosa? Imparare vba mi da un valore aggiunto non solo per il mio lavoro ma per tutto ,excel e access hanno un profumo diverso col vba ti invio il mio link di skype quando puoi ne saro lieto.Grazie
Comunque e' vero perche' imparo da autoditatta pure io compro corsi su udemy e non ci capisco nulla causa pure troppi impegni. Ma mi rendo conto che ne ho veramente bisogno. Il configuratore ora e' cosi ma presto userà tutti gli accorgimenti di cui mi hai parlato .Il tempo di imparare a mettere le mani sulla tastiera.
Aspetto tue notizie
Buona serata, @veleno;
purtroppo VBA EXCEL è piuttosto diverso dal VBA ACCESS.In Skype trovo tre account:
1) Roberto Paolini - paoliniroberto - Colleferro
2) paoliniroberto - galatea34 - forli, italy
3) paoliniroberto - galatea34 - forli, italyQual'è il tuo 1, 2 o 3.
Buona serata.
Giuseppe
Buona sera, @veleno;
provo a contattarti e, come sempre, rimane l'impegno di condividere in Forum eventuali sviluppi.Buona serata e buon fine settimana.
Giuseppebuongiorno Giuseppe ho visto che hai provato a chiamarmi stasera e domani rientro alle 22 dal lavoro non mi pare il caso lunedi e martedi sono di riposo quindi se per te va bene dalle 20 in poi ci proviamo a conoscerci
OK.
Buon fine settimana.
Giuseppe
Private Sub ComboBox1_GotFocus()
Cells(2, 6).Value = ""
TextBox1.Value = ""
End Sub
Private Sub ComboBox1_LostFocus()
Dim x As Double
If ComboBox1.Value = "" Then
MsgBox "Manca la misura della lunghezza"
End
End If
TextBox1.ForeColor = &H80000008
For x = 22 To 27
If Cells(x, 1) = Val(ComboBox1.Value) Then
TextBox1.Value = Val(ComboBox1.Value)
Exit For
End If
Next x
If TextBox1 = "" Then
TextBox1.ForeColor = &HFF&
TextBox1.Value = Val(ComboBox1.Value)
Cells(2, 6).Value = 0.25
End If
Call Calcola_area
End SubPrivate Sub ComboBox2_GotFocus()
Cells(7, 6).Value = ""
TextBox2.Value = ""
End Sub
Private Sub ComboBox2_LostFocus()
Dim x As Double
If ComboBox2.Value = "" Then
MsgBox "Manca la misura della larghezza"
End
End If
TextBox2.ForeColor = &H80000008
For x = 22 To 29
If Cells(x, 2) = Val(ComboBox2.Value) Then
TextBox2.Value = Val(ComboBox2.Value)
Exit For
End If
Next x
If TextBox2 = "" Then
TextBox2.ForeColor = &HFF&
TextBox2.Value = Val(ComboBox2.Value)
Cells(7, 6).Value = 0.25
End If
Call Calcola_area
End SubSub Calcola_area()
If TextBox1.Value <> "" And TextBox2.Value <> "" Then TextBox3 = TextBox1.Value * TextBox2.Value
TextBox3 = Format(TextBox3, "#,##")
End Subecco qua non ho capito quasi nulla aiuto
Buona giornata, @veleno;
cerco di spiegare con ordine:Private Sub ComboBox1_GotFocus() Cells(2, 6).Value = "" TextBox1.Value = "" End Sub
GotFocus è l'evento che attiva le istruzioni:
Cells(2, 6).Value = "" a ben vedere sarebbe più logico Cells(2, 6).ClearContents
TextBox1.Value = ""
quando ComboBox1 viene attivato.
In Cella(2,6) e Cella(7,6) pensavo di inserire l'extra costo +0,25% nel caso in cui la dimensione sia fuori standard.ComboBox1_LostFocus è l'evento che attiva la sequenza sottostante quando si esce da ComboBox1.
Le istruzioni:
Dim x As Double If ComboBox1.Value = "" Then MsgBox "Manca la misura della lunghezza" End End If TextBox1.ForeColor = &H80000008 For x = 22 To 27 If Cells(x, 1) = Val(ComboBox1.Value) Then TextBox1.Value = Val(ComboBox1.Value) Exit For End If Next x If TextBox1 = "" Then TextBox1.ForeColor = &HFF& TextBox1.Value = Val(ComboBox1.Value) Cells(2, 6).Value = 0.25 End If Call Calcola_area End Sub
Esegue una serie di controlli sul Valore inserito in ComboBox1; nel caso di una dimensione fuori standard il Valore sarà evidenziato in "Rosso"
Analogamente per ComboBox2
Il Codice VBA Calcola_area esegue un controllo su ComboBox1.value e ComboBox2.value se untrambi i ComboBox sono valorizzati esgue il calcolo dell'area.
Non voglio dilungarmi oltre in quanto in Skype ti proporrò di sostituire TextBox1 e TextBox2 con ComboBox1 e ComboBox2 ma sarai tu a decidere; come anticipato precedentemente ogni sviluppo in Skype sarà condiviso in Forum.
Buon fine settimana.
Giuseppe
-
AutoreArticoli