Navigazione
Recensioni Siti Web

Siti Web Visti per Voi

Quotidiani Online

rassegna stampa

Noi diciamo No

No alla Pedofilia

No alla Droga

No alla Violenza sulle donne
Crimine e Investigazione

Computer, Crimine ed Investigazione

Calendario
September 2010
M T W T F S S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Ultimi articoli
La verità sul massacro di...
Come ottenere informazion...
Pericolo Pedofilia : L'ed...
Nets ‘Metropolitan’ Legen...
Corso VBA #13 : Gestione ...
Corso VBA #12 : Gestione ...
L'A.N.R.P. Su Cefalonia: ...
Orizzonti: Bambini soldat...
+Corso VBA #13 : Gestione Preventivi - Parte 2
Ora ci rimane da vedere il processo di lettura dei dati nel foglio “Listino” e la scrittura degli stessi nel foglio “Preventivi”. Guardiamo la Userform che ci interfaccia



Una volta selezionata la categoria e l’articolo che ci interessa dobbiamo inserire la quantità nel relativo box e cliccare sul pulsante con l’icona a matita e inseriremo i dati nel foglio “Preventivi”



Prima di vedere il codice utilizzato, dobbiamo fare una considerazione, come potete vedere nella Userform c’è solo il campo “Quantità”, e nel codice che finora abbiamo utilizzato e commentato non apparivano variabili o celle in cui andavamo a memorizzare gli altri dati, come il codice articolo, il prezzo etc..
In questi casi risulta comodo e pratico usare delle “scorciatoie” per memorizzare i dati che andiamo a scrivere, vediamo la Userform “allargata” cosa contiene



Allargando le dimensioni della Userform nell’editor di VBA sono comparsi 2 campi che prima erano nascosti e contengono il codice articolo e il prezzo. La loro compilazione avviene nella routine ListBox2_Click con questo codice

Private Sub ListBox2_Click()
p = ListBox2.ListIndex + 3
cancella
TextBox1.Text =Sheets("Listino").Cells(p, posiz)
TextBox2.Value =Format(CDbl(Sheets("Listino").Cells(p, posiz + 7)), "##.00") TextBox3.SetFocus
End Sub


Nella lezione precedente abbiamo visto la funzione ListCount che rappresenta il contatore di oggetti presenti nel ListBox, ora usiamo ListIndex, ricordiamo che la proprietà List(indice) rappresenta il contenuto della riga il cui indice è la proprietà Listindex, cioè quella selezionata. Per cui ritornando al nostro codice

p = ListBox2.ListIndex + 3

Dobbiamo tener presente che ogni voce del nostro elenco siano esse in una ListBox o in una ComboBox hanno tutte il valore iniziale “0” [zero], per cui se vogliamo sapere la riga del foglio a cui corrisponde la voce selezionata dobbiamo fare il calcolo matematico ListBox2.ListIndex+3, dove 3 è il numero di riga da cui abbiamo iniziato ad inserire i nostri articoli.

Per cui la prima voce avrà come valore List 0, la seconda valore 1, la terza valore 2 e così di seguito, per cui sommando il valore 3 al valore List avremmo il numero di riga corrispondente all’articolo selezionato.
La riga successiva richiama una routine cancella, vediamo il suo codice

Private Sub cancella()
TextBox1.Text = "": TextBox2.Text ="": TextBox3.Text = ""
End Sub


Molto semplice ed intuitiva, con quella routine cancelliamo i valori presenti nei vari box per evitare errori di calcolo, poi di seguito riempiamo i vari TextBox con i relativi valori memorizzati nel foglio “Listino” relativi all’articolo selezionato

TextBox1.Text = Sheets ("Listino").Cells(p,posiz)

Con questo codice diamo al TextBox1 il valore presente nel foglio “Listino” alle coordinate della riga p e colonna posiz. Abbiamo visto nella lezione precedente che la variabile posiz indica il numero della colonna corrispondente alla categoria selezionata nel ListBox1, mentre invece la variabile p indica il numero di riga dell’articolo selezionato nel ListBox2

TextBox2.Value =Format(CDbl(Sheets("Listino").Cells(p, posiz + 7)), "##.00")

Per il TextBox2 facciamo la stessa identical cosa, solo che è rappresentato con una funzione aggiuntiva, la proprietà Format, che vedremo meglio nel proseguo delle varie lezioni, per il momento considerate che questa funzione ha il compito di “formattare” i valori numerici pertanto il valore 1000 diventa 1.000,00

TextBox3.SetFocus

Questo enunciato serve per riportare il focus (cioè portare il cursore) sul TextBox3 che corrisponde al campo “Quantità”, in modo che quando clicchiamo sul ListBox2 abbiamo già il cursore posizionato sul TextBox della “Quantità” pronto a ricevere i dati che andremmo ad inserire. Vediamo ora l’inserimento dei dati che abbiamo raccolto sull’articolo selezionato, disponibili sia nel ListBox che nei TextBox, li inseriamo nel foglio usando questo codice :

Private Sub CommandButton2_Click()
If FormArt.TextBox3 = "" Then: _ MsgBox "Inserire quantità", vbExclamation: Exit Sub
i = 17
Do Until Sheets("Preventivi").Cells(i, 2) = Empty
i =i + 1
Loop


With Sheets("Preventivi")
.Cells(i, 2).Value = TextBox1.Text 'codice
.Cells(i, 3).Value = ListBox2.Text 'descrizione
.Cells(i, 14).Value = TextBox3.Text 'quantità
.Cells(i, 15).Value = TextBox2.Text 'prezzo
.Cells(i, 17).Formula = "=RC[-2]*RC[-3]" 'importo
End With


[P51].Formula = "=sum(Q17:Q49)" 'totale imponibile
[P53].Formula = "=(P51*20)/100" 'Importo iva
[P55].Formula = "=sum(P51+P53)" 'totale ordine
End Sub


La prima riga non è altro che una condizione da verificare per evitare errori, praticamente controlla che il campo “Quantità” contenga un valore, in caso contrario manda un avviso ed esce dalla sub. In questo caso però ci tocca rifare tutto per aver dimenticato di inserire la quantità richiesta per l’articolo selezionato, possiamo ovviare a questo modificando il codice in questo modo :

If FormArt.TextBox3 = "" Then: _ MsgBox "Inserire quantità",vbExclamation: TextBox3.SetFocus

In questo modo veniamo avvisati dal programma che ci siamo dimenticati di inserire la quantità, e il focus rimane nel TextBox della quantità.

i = 17

Poniamo la variabile i uguale a 17 che se guardate la 2° immagine vedete che corrisponde alla 1° riga del foglio “Preventivi” che riceverà il primo articolo.
A questo punto però non sappiamo in quale riga andare a scrivere i nostri dati e per evitare eventuali sovrascritture andiamo a verificare quale sia la prima riga libera che possa ricevere i nostri dati partendo dalla riga 17 con il codice :

Do Until Sheets("Preventivi").Cells(i, 2) = Empty
i = i + 1
Loop


Abbiamo già visto i cicli, comunque molto brevemente con il ciclo Do Loop scorriamo il foglio partendo dalla riga 17 colonna 2, finche non troviamo una riga vuota, che indicherà la condizione soddisfatta e ci permette di uscire dal ciclo. Verificata la condizione la nostra variabile i assumerà tale valore che useremo nel resto del listato per inserire i nostri dati.
Con questa operazione abbiamo dato un valore alla variabile i e ora sappiamo in che riga iniziare a scrivere i nostri dati, cosa che faremo con il seguente codice :

With Sheets("Preventivi")
.Cells(i,2).Value = TextBox1.Text 'codice
.Cells(i, 3).Value = ListBox2.Text 'descrizione
.Cells(i, 14).Value = TextBox3.Text 'quantità
.Cells(i, 15).Value = TextBox2.Text 'prezzo
.Cells(i,17).Formula = "=RC[-2]*RC[-3]"'importo
End With


Useremo un ciclo With per scrivere i dati nel foglio “Preventivi”, credo che il listato sia abbastanza intuitivo, in pratica dando un valore ai vari Box presenti nella Userform ora possiamo utilizzare questo valore per trasportarlo nel foglio con un semplice rapporto di uguaglianza tra le coordinate Cells e i valori dei vari box. Da notare la trascrizione della formula nella colonna “Importo” che dal VBA esporteremo in excel, moltiplicando il valore presente nelle celle di 3 colonne precedenti con quello di 2 colonne precedenti.
Concludiamo il nostro inserimento trascrivendo le formule per la somma di tutti i dati con il codice

[P51].Formula = "=sum(Q17:Q49)" 'totale imponibile
[P53].Formula = "=(P51*20)/100" 'Importo iva
[P55].Formula = "=sum(P51+P53)" 'totale ordine


Vedremo nella prossima lezione come memorizzare il nostro preventivo in modo da poterlo interrogare ogni volta che ne abbiamo la necessità
Accedi Alla Community
Username

Password




Contatti Polizia Postale

Polizia Postale

Shoutbox
Devi essere loggato per poter inserire un messaggio.

08 settembre 2010
buongiorno Neutrino

08 settembre 2010
Buon giorno a tutti!

07 settembre 2010
Ciao ragazzi. Avete notizie del "pianetapc" sui cambiamenti visti recentemente ??

05 settembre 2010
Buona domenica a tutti Canto

03 settembre 2010
Buon pomeriggio a tutti .... belli e brutte Smile

Siti Amici

Siti Amici

Last Seen Users
Gho5t Nick: Gho5t
Iscritto: 05.05.08
< 5 min
Unsigned Nick: Unsigned
Iscritto: 15.08.08
01:20:12
Faby Nick: Faby
Iscritto: 28.05.08
01:40:43
Neutrino Nick: Neutrino
Iscritto: 21.11.08
02:02:54
Max90 Nick: Max90
Iscritto: 12.08.08
05:16:01

Totale iscritti: 299
Il nuovo iscritto: Bruno56
Page Rank

Powered by  MyPagerank.Net