|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2006
Città: Monza
Messaggi: 302
|
VBA + Excel Inserimento riga e dati da inputbox
Ciao a tutti ragazzi dovrei realizzare un file excel dove l'utente che inserirà i dati dovrà avere a disposizione un command button da cui partire.
Una volta cliccato sul tasto il codice dovrebbe ricercare l'ultima riga occupata e da li inserirne una nuova alla quale assegnare in 3 celle diverse (xA, xB, xC - la x è il numero di riga vuota trovata in precedenza) i dati che l'utente inserirà tramite inputbox. L'input box dovrà accettare i seguenti dati: in A un codice interno, in B un codice fornitore, in C il prezzo di acquisto dell'articolo. Un quarto inputbox invece dovrà richiedere la percentuale di ricarica desiderata. Quest'ultimo dato dovrà essere solo di appoggio in quanto necessario al calcolo di un prezzo di listino (dato da prezzo di acquisto + la percentuale immessa con un arrotondamento ad 1 cifra). La percentuale reale sarà calcolata in automatico tramite formule partendo dal prezzo di listino meno la percentuale di sconto (cosa che già viene effettuata tramite formule) Quello che mi serve quindi è il codice VBA da poter assegnare al command button. Sono riuscito ad implementare gli inputbox ma non riesco a trovare una funzione che ricerchi una riga vuota ed assegni il focus. Spero di essere stato chiaro, in caso contrario cercherò di spiegarmi meglio. Grazie a tutti edit: dimenticavo, il command button posizionato a qualche riga sotto dovrà scendere automaticamente ogni volta che si inseriscono le righe.
__________________
Vendite OK: Eurocomputer - eliano - VirtualT. - Gemstone86 Acquisti OK: VaGioxp - white.devils - ParadiseEagle87 - Jack 85 - Dark Slayer - pioss~s4n - Ciccillover - Parappaman - BloodFlowers Acquisti KO: Kir@ Ultima modifica di diamante.picci : 08-07-2015 alle 10:36. |
![]() |
![]() |
![]() |
#2 |
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21813
|
secondo me fai prima a gestire tutta la fase di inserimento da un form con le caselle di testo per i 3 dati che ti servono
per la ricerca guarda cicla usando il comando range
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
![]() |
![]() |
![]() |
#3 | ||
Senior Member
Iscritto dal: Oct 2006
Città: Monza
Messaggi: 302
|
Quote:
Scrivo il codice qui così se qualche volenteroso vuole analizzarlo ed eventualmente correggerlo: Quote:
In breve spiego cosa fa questa funzione: prima di tutto trova l'ultima riga con i dati, duplica quella riga (per non perdere i dati) e nella successiva va ad inserire i 3 dati richiesti all'utente; infine chiede che percentuale di ricarica vuole praticare sull'ultima scontistica (questo è un dato indicativo, in quanto la percentuale reale sarà calcolata dal prezzo di listino il quale viene arrotondato per semplicità). L'unico problema che riscontro è che la funzione va in loop, dato che una volta terminato l'inserimento devo forzare la chiusura. Inoltre se all'inserimento non inserisco nessun dato viene visualizzato l'avviso ma mi fa andare avanti, mentre vorrei che l'utente fosse obbligato ad inserire quel determinato dato. Infine volevo chiedere un'altra cosa più matematica che di programmazione. Avendo il prezzo di acquisto e volendo calcolare un ricarico ad esempio del 30% sull'ultima scontistica, come faccio a sviluppare un prezzo di listino considerando che lo sconto massimo è del 50% + 20% dal prezzo di listino? Io ho calcolato per 2.8 ma non credo sia la formula esatta. Grazie
__________________
Vendite OK: Eurocomputer - eliano - VirtualT. - Gemstone86 Acquisti OK: VaGioxp - white.devils - ParadiseEagle87 - Jack 85 - Dark Slayer - pioss~s4n - Ciccillover - Parappaman - BloodFlowers Acquisti KO: Kir@ Ultima modifica di diamante.picci : 10-07-2015 alle 10:19. |
||
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2004
Città: RoMaNoVeNeTo
Messaggi: 756
|
il loop è causato da questo
If Trim(codice_fornitore <> "") Then ' perchè un controllo del tipo if codice_fornitore = false dovrebbe essere sufficiente, ma in questo caso codice_fornitore è un variant con type boolean ma perchè non fai cosi? TestVal = Application.InputBox("codice fornitore", "Cancel Test") If TestVal = False Then.. è più veloce
__________________
Acer m5500 (Q6600,4MB) Sapphire Ati 3850, Logitech Performance MX, Tastiera Logitech G15, Epson bx 310 FN, QNAP 419p+, WDTVLIVE, Harmony One |
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Oct 2006
Città: Monza
Messaggi: 302
|
Quote:
Ora non va più in loop, credo che c'era un'istruzione sbagliata. Se c'è qualcuno che ha bisogno del codice, eccolo: Quote:
__________________
Vendite OK: Eurocomputer - eliano - VirtualT. - Gemstone86 Acquisti OK: VaGioxp - white.devils - ParadiseEagle87 - Jack 85 - Dark Slayer - pioss~s4n - Ciccillover - Parappaman - BloodFlowers Acquisti KO: Kir@ Ultima modifica di diamante.picci : 17-07-2015 alle 23:34. |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:42.