Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

evento click combobox che porta dati

709 views
Skip to first unread message

alex

unread,
Oct 20, 2009, 4:53:26 AM10/20/09
to
cIAO A Tutti ho un problema:

In un foglio ho inserito i dati di fatture emesse durante piu' anni.
colonna A = datafattura(nota)
colonna b = numerofattura(nota)
colonna c = codicefiscale(nota)
nota= ho cercato di crearmi una chiave di ricerca univoca

nelle successive colonne i vai campi relativi a imponibili descrizioni ecc.
Ora una combobox mi elenca tutte le fatture presenti all'interno del
foglio.Ma se io voglio selezionare una riga della combo per ottenere i soli
dati di quella riga e portarli in alcune texbox di una user form come posso
fare?
Qualcuno puo' aiutarmi?


alex

unread,
Oct 20, 2009, 4:58:06 AM10/20/09
to
piccola correzione: e' una listbox no combo

Mauro Gamberini

unread,
Oct 20, 2009, 5:44:24 AM10/20/09
to

Ne abbiamo discusso pochi giorni fa.
Vediamo di farne un riepilogo adattato(spero) al tuo
caso.

Una UserForm con la tua ListBox(ListBox1) e tre TextBox
(TextBox1/2/3).
Sul foglio Dati abbiamo la tabella.
Voglio che facendo click sulla ListBox,
i dati delle varie colonne vengano messi nelle
TextBox.
Un primo problema � che la ListBox pu� contenere solo
10 campi(colonne), quindi se hai 12 colonne nella tabella
2 non puoi visualizzarle nella ListBox.
Nel mio esempio la tabella nel foglio dati ha 3 campi ed �
cos� composta:

A B C
1 Nome Comune Provincia
2 aaaaa xxxxxxx yy
3 bbbbb xxxxyyy xy
4 ccccc xxyyyyy xx
5 ddddd xxxxxxx yy
6 eeeee xxxxyyy xy

Il codice va tutto nel modulo della UserForm.

'evento eseguito alla creazione
'della UserForm
Private Sub UserForm_Initialize()

'dichiarazione variabili
Dim sh As Worksheet
Dim rng As Range

'metto il riferimento al foglio Dati
Set sh = Worksheets("Dati")

With sh
'passo il Range della tabella alla
'variabile rng
Set rng = .Range("A1").CurrentRegion
'setto il numero delle colonne
'della ListBox1 uguale al numero
'delle colonne della tabella
'che ho nel foglio Dati
Me.ListBox1.ColumnCount = rng.Columns.Count
'elimino l'eventuale riga di intestazione
'della tabella(vedi tu se mantenere la riga
'qui sotto)
Set rng = rng.Offset(1, 0 _
).Resize(rng.Rows.Count - 1, _
rng.Columns.Count)
End With

'carico i dati nella ListBox1
With Me.ListBox1
.List = rng.Value
End With

'Set a Nothing della variabile oggetto
Set rng = Nothing

End Sub

NOTA.
Puoi anche definire tu il numero delle colonne
della ListBox modificando qui:

Me.ListBox1.ColumnCount = rng.Columns.Count

cos�:

Me.ListBox1.ColumnCount = 3

(qui ho 3 colonne).

Adesso mettiaamo il codice per l'evento Click
della ListBox1:


'evento Click della ListBox1
'che, quando eseguito, copia
'i contenuti delle colonne
'della riga nelle TextBox
Private Sub ListBox1_Click()

'dichiaro le variabili
Dim lng As Long

'controlli sulla UserForm
With Me

'ciclo i campi della ListBox
'e metto i valori nelle TextBox
For lng = 1 To 3
'pulisco la TextBox dal dato
'precedente
.Controls("TextBox" & lng).Value = ""
'inserisco i valori delle varie colonne
.Controls("TextBox" & lng).Value = _
.ListBox1.List(.ListBox1.ListIndex, lng - 1)
Next

End With

End Sub

NOTA.
Le righe e le colonne nella ListBox sono
in base 0(zero), cio� la prima riga e la prima
colonna sono riga 0 e colonna 0. Tienine conto.


--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


alex

unread,
Oct 20, 2009, 6:23:03 AM10/20/09
to

>
> Ne abbiamo discusso pochi giorni fa.
> Vediamo di farne un riepilogo adattato(spero) al tuo
> caso.
Grazie Mauro sei sempre gentilissimo. Avevo trovato qualche cosa, ma forse
non avevo captato che facesse il caso mio.
Ho provato tutto funziona alla perfezione.Pero' grazie ad una tua
rivelazione mi si apre un problemone: le colonne nella listbox potrebbero
essere anche meno di 10, ma i dati che poi io portero' nelle text box sono
molti di piu',imponibile(ripetuo sei volte) iva(sei volte) totale(6 volte)
ecc.ecc.
A questo punto mi conviene di piu' sapere a quale riga del foglio dati
corrisponde la selezione della listbox? Se si riesci a darmi
un'infarinatura?


Mauro Gamberini

unread,
Oct 20, 2009, 6:41:20 AM10/20/09
to
> Grazie Mauro sei sempre gentilissimo. Avevo trovato qualche cosa, ma forse
> non avevo captato che facesse il caso mio.
> Ho provato tutto funziona alla perfezione.Pero' grazie ad una tua
> rivelazione mi si apre un problemone: le colonne nella listbox potrebbero
> essere anche meno di 10, ma i dati che poi io portero' nelle text box sono
> molti di piu',imponibile(ripetuo sei volte) iva(sei volte) totale(6 volte)
> ecc.ecc.
> A questo punto mi conviene di piu' sapere a quale riga del foglio dati
> corrisponde la selezione della listbox? Se si riesci a darmi
> un'infarinatura?
>

Grazie per gentile il riscontro.

ListIndex ti restituisce l'indice della riga selezionata.
Prova ad aggiungere questa riga in fondo all'evento
Click:

Worksheets("Dati").Rows(Me.ListBox1.ListIndex + 2).Select

(+2 perch� siamo in base 0 nella ListBox
e abbiamo inoltre l'intestazione nella tabella
sul foglio Dati)

Esegui il Click e vedi che succede.
Riesci adesso da solo?
Se hai bisogno, chiedi pure.
Grazie.

Mauro Gamberini

unread,
Oct 20, 2009, 8:00:55 AM10/20/09
to
<cut>

nel caso ti interessi,
qui trovi il file che ho utilizzato per
provare il codice postato:

http://www.maurogsc.eu/esemping/listtextbox.zip

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

alex

unread,
Oct 20, 2009, 8:55:00 AM10/20/09
to
Grazie, ora vado a vederlo!
Non e' che per caso scrivi qualche libro tu sul vba per excel? Sarei
interessato ai tuoi testi se cosi' fosse.

alex

unread,
Oct 20, 2009, 9:15:29 AM10/20/09
to
>
> nel caso ti interessi,
> qui trovi il file che ho utilizzato per
> provare il codice postato:
>
> http://www.maurogsc.eu/esemping/listtextbox.zip

Il tuo pgm funziona, adattato al mio non riesco a farlo funzionare.
Ti spiego, lui con la proprieta' listindex e' posizionato a 1 , perche' io
seleziono la prima riga.Poi aggiungo +2 al comando Me.lstconta.ListIndex +
2).Value e lui va a leggere su riga tre del foglio, che pero' non
corrisponde alla riga che ha valorizzato l'indice 1della listbox :(


Mauro Gamberini

unread,
Oct 20, 2009, 9:16:45 AM10/20/09
to
> Grazie, ora vado a vederlo!
>

Grazie a te per il riscontro.

> Non e' che per caso scrivi qualche libro tu sul vba per excel? Sarei
> interessato ai tuoi testi se cosi' fosse.
>

Una volta Fernando scrisse pi� o meno questo
(o almeno questo mi sembra ricordare fosse
il concetto espresso):

i libri invecchiano
in Internet trovo sempre tutto, dal vecchio al nuovo

Inoltre, cosa potrei mai aggiungere a quello
che si trova in rete o sui libri gi� disponibili?

E in un libro(e qui concludo) troveresti le mie idee.
In Internet trovi *tante* idee.

Grazie comunque per la stima(immeritata).
Buon lavoro.

alex

unread,
Oct 20, 2009, 9:31:02 AM10/20/09
to

> Inoltre, cosa potrei mai aggiungere a quello
> che si trova in rete o sui libri gi� disponibili?

> E in un libro(e qui concludo) troveresti le mie idee.
> In Internet trovi *tante* idee.
> Grazie comunque per la stima(immeritata).
> Buon lavoro.

Sara' che su un libro riesco a capire meglio che su un video di un pc?
Chiamala stima immeritata, rispondi sempre gentilmente e a tutti risolvi i
problemi fai un po' te , se questo non si chiama meritarsi la stima.


Mauro Gamberini

unread,
Oct 20, 2009, 9:25:48 AM10/20/09
to
> Il tuo pgm funziona, adattato al mio non riesco a farlo funzionare.
> Ti spiego, lui con la proprieta' listindex e' posizionato a 1 , perche' io
> seleziono la prima riga.Poi aggiungo +2 al comando Me.lstconta.ListIndex +
> 2).Value e lui va a leggere su riga tre del foglio, che pero' non
> corrisponde alla riga che ha valorizzato l'indice 1della listbox :(
>

Nel mio esempio c'� una riga di intestazione
nella tabella in foglio Dati e la tabella
parte da riga 1.

Confronta con la tua tabella(dove inizia,
ha l'intestazione, ecc) e prova a modificare
quei +1, +2....

Se non riesci, gentilmente posta
i riferimenti della tua tabella. Grazie.

alex

unread,
Oct 20, 2009, 9:46:04 AM10/20/09
to
mia tabella:
Col.A Col.B Col.C D E F
G H I
ANNO CODICE FISCALE UNICO ICI DES1 DES 2 DES3 DES4 DES5(RIGO 1 DEL
FOGLIO2)
2007 FLA... 15 5 XX XX
XX XX XX (RIGO2)
2007 FLS.... XXX X XX XX
XX XX XX (RIGO3)
2008 FLS... XXX X XX XX
XX XX XX (RIGO 4)
Un record puo' essere ripetuto piu' volte ma avra' anno diverso.
Non ne esco fuori eppura ci sara' una soluzione.
Praticamente se in list box ho visualizzato le fatture anno 2007 E 2008
avro' due valori corrispondendi a rigo2 e rigo 4 del foglio2 .Se clicco sul
SECONDO valore della list box
ovvero 2008 FLS VORREi riuscire a capire che questi dati li trovo a foglio2
rigo4 e poter esportare gli stessi in alcune texbox.Ma non mi riesce il
giochetto.
Hai capito il mio esempio orrendo?
Grazie ancora.


Mauro Gamberini

unread,
Oct 20, 2009, 10:15:41 AM10/20/09
to

Ahim�, poco poco.

Quindi hai 9 campi(colonne)?
Da A1 a I(n), � cos�?
Quante sono le TextBox sulla UserForm
e che corrispondenza devono avere con i campi?

alex

unread,
Oct 20, 2009, 10:39:32 AM10/20/09
to

> Ahim�, poco poco.
>
> Quindi hai 9 campi(colonne)?
> Da A1 a I(n), � cos�?

> Quante sono le TextBox sulla UserForm
> e che corrispondenza devono avere con i campi?

no no, sono piu' di nove, io per comodita' te ne ho messe solo alcune.
Le textbox sulla userform sono esattamente tante quante le colonne.
Io dovrei riuscire, cliccando sul singolo rigo della listbox, ad avere una
maschera che riproduca la fattura relativa al rigo che io ho cliccato nella
listbox.
Ma tutto questo credo di poterlo avere solo sapendo in che riga del foglio2
ho i dati che corrispondono alla riga della listbox ma non ne vengo fuori.
Capito?


alex

unread,
Oct 20, 2009, 11:28:15 AM10/20/09
to
Forse ho risolto, in visualiz.non si possono avere piu' di dieci colonne,
pero' mi pare di aver visto che i dati ci sono anche oltre le dieci colonne.
qUINDI i dati riersco a recuperarli allora.


Mauro Gamberini

unread,
Oct 20, 2009, 11:29:12 AM10/20/09
to
> no no, sono piu' di nove, io per comodita' te ne ho messe solo alcune.
> Le textbox sulla userform sono esattamente tante quante le colonne.
> Io dovrei riuscire, cliccando sul singolo rigo della listbox, ad avere una
> maschera che riproduca la fattura relativa al rigo che io ho cliccato
> nella listbox.
> Ma tutto questo credo di poterlo avere solo sapendo in che riga del
> foglio2 ho i dati che corrispondono alla riga della listbox ma non ne
> vengo fuori.
>

Vediamo un po'.

Tabella.

A B C
1 R1C1 R1C2 R1C3
2 R2C1 R2C2 R2C3
3 R3C1 R3C2 R3C3
4 R4C1 R4C2 R4C3
5 R5C1 R5C2 R5C3

Dove, � intuibile, i dati immessi
nelle celle danno la posizione del
dato rispetto alla riga(R) e alla colonna(C).
Excel *ragiona* nelle celle in base 1, cio� la
prima riga � la riga 1 e la prima colonna
� la colonna 1.

La ListBox invece, *ragiona* in base 0.
Cio� la prima riga � la riga 0 e la
prima colonna � la colonna 0.

Quindi, se carico i dati della tabella qui
sopra in una ListBox ecco come si presentano
in base a righe e colonne della ListBox:

Colonna 0 Colonna 1 Colonna 2
Riga 0 R1C1 R1C2 R1C3
Riga 1 R2C1 R2C2 R2C3
Riga 2 R3C1 R3C2 R3C3
Riga 3 R4C1 R4C2 R4C3
Riga 4 R5C1 R5C2 R5C3

Abbiamo detto che ListBox mi restituisce il numero della
riga della ListBox che ho selezionato.
Quindi se seleziono la 2� (la seconda) riga della ListBox
il ListIndex restituito sar� 1(UNO) ed il suo
contenuto sar�: R2C1/R2C2/R2C3.
Se(se) non tengo conto della differenza relativa
alla gestione degli indici(quello che sopra ho
chiamato *ragiona*), se a questo punto chiedo
che il valore ListIndex restituito(ricordo � 1)
venga utilizzato per prendere un dato sulla riga del
foglio di Excel, ecco che ho un disallineamento fra
la ListBox e la tabella.

Riga 1 ListBox =R2C1/R2C2/R2C3
Riga 1 Tabella =R1C1/R1C1/R1C3

La stessa cosa vale, come si pu� vedere nell'esempio,
per le colonne nel caso si utilizzi Cells(riga,colonna)
anzich� Range(Range.Address).

Quindi, questa tabella con intestazione:

A B C
1 INT1 INT2 INT3
2 AAA1 BBB1 CCC1
3 AAA2 BBB2 CCC2
4 AAA3 BBB3 CCC3
5 AAA4 BBB3 CCC4

Verr� caricata in questo modo nella ListBox

0 1 2
0 INT1 INT2 INT3
1 AAA1 BBB1 CCC1
2 AAA2 BBB2 CCC2
3 AAA3 BBB3 CCC3
4 AAA4 BBB3 CCC4

Per avere in una TextBox il valore
della riga selezionata nella ListBox
relativo alla colonna M, il mio
codice sar�:

TextBox1.Text = NomeFoglio.Range("M" & ListBox1.ListIndex + 1)

Perch�, ad esempio se selezioni la terza riga
della ListBox, ListIndex restituisce 2, ma la riga 2
della tabella non � quella corretta, quindi aggiungo
un 1 e 2 +1 = 3, terza riga della tabella, riga corretta.

Se(se) come l'esempio postato in precedenza(e che trovi al link),
non voglio portare l'intestazione delle colonne nella ListBox,
devo tenerne conto.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


Mauro Gamberini

unread,
Oct 20, 2009, 11:41:02 AM10/20/09
to

Ma allora non leggi i post!
Cosa ho scritto io nella prima risposta?

<old>


Un primo problema � che la ListBox pu� contenere solo
10 campi(colonne), quindi se hai 12 colonne nella tabella
2 non puoi visualizzarle nella ListBox.

</old>

Ma negli esempi postati e in quello al link
vedi che posso portare nelle TextBox anche
i valori non presenti nella ListBox ma che
si trovano in una determinata riga!

Non preoccuparti, capisco che quello che a me sembra
semplice, sia invece difficile per te e che oltretutto
� tutto il giorno che *ti sbatti* con queste *brutte cose*.


--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


alex

unread,
Oct 20, 2009, 12:44:54 PM10/20/09
to
Grazie mauro,risolto tutto con il primo esempio di questa mattina.Io avevo
letto, ma avevo capito che oltre le dieci non si poteva andare in tutti i
sensi.<Invece forse le per max dieci intendevi in visualizzazione della
listbox.
Quelle che tu chiami brutte cose, vorrei tanto impararle per bene :)
Ciao buona serata


Mauro Gamberini

unread,
Oct 20, 2009, 12:58:25 PM10/20/09
to

Bene!
Grazie della tua pazienza verso il mio poco
capire cosa tu stessi facendo dalle tue parti.
Buon lavoro e buona serata.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

alex

unread,
Oct 21, 2009, 2:59:02 AM10/21/09
to
Bene!
> Grazie della tua pazienza verso il mio poco
> capire cosa tu stessi facendo dalle tue parti.
> Buon lavoro e buona serata.

Mah, credo che di pazienza ne hai avuto di piu' tu :)
Ora arrivera' il bello.
Voglio stampare le fatture dato un intervallo di numeri tipo dalla alla e
non so se con excel si possa fare.


Mauro Gamberini

unread,
Oct 21, 2009, 3:11:15 AM10/21/09
to
> Voglio stampare le fatture dato un intervallo di numeri tipo dalla alla e
> non so se con excel si possa fare.
>

Dove sono e cosa intendi per fatture?
Se(se) parliamo di ci� che produciamo
partendo dal codice ottenuto in questo
thread, forse meglio non aprire una
nuova richiesta per maggiore chiarezza.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


alex

unread,
Oct 21, 2009, 3:32:38 AM10/21/09
to

> Dove sono e cosa intendi per fatture?
> Se(se) parliamo di ci� che produciamo
> partendo dal codice ottenuto in questo
> thread, forse meglio non aprire una
> nuova richiesta per maggiore chiarezza.

Dunque le fatture sono nella stessa tabella di cui abbiamo parlato in
questo tread.IL motivo per cui io volevo che all'evento click del mouse
venissero riportati i dati nelle text box ,era per vedere se riuscivo a
stampare la singola fattura.Avendo i dati nelle texbox, ho messo un tasto
stampa, ho trasferito questi dati su un foglio nuovo di excel(sempre dello
stesso file)e stampo la fattura.Ad ogni tasto stampa, prima pulisco i campi
del foglio nuovo, poi riporto i dati delle text box in celle,in etichette e
stampo.Problema: Mettiamo che io non voglio stampare una sola fattura, ma
voglio dare la possibilita' tramite un form di decidere da che numero a che
numero stampare.Con access, forse avrei fatto una query o avrei usato >= di
XX oppure beetwen credo... Qui come faccio? devo farmi rigo per rigo e
controllare un singolo valore di una cella?

alex

unread,
Oct 21, 2009, 4:57:07 AM10/21/09
to
Dove sono e cosa intendi per fatture?
> Se(se) parliamo di ci� che produciamo
> partendo dal codice ottenuto in questo
> thread, forse meglio non aprire una
> nuova richiesta per maggiore chiarezza.

Mauro ho provato cosi':(naturalmente ho messo solo dei msgbox per capire se
prendevo i dati giusti)

Private Sub cmdstampafatture_Click()
Dim RIGA As Integer
Dim CL As Integer

Foglio6.Activate
RIGA = Worksheets(6).UsedRange.Rows.Count
RANGE("B2").Select
For CL = 2 To RIGA
If ActiveCell.Value >= txtda.Text And ActiveCell.Value <= txta.Text Then
MsgBox "STAMPO LA FATTURA NUM" & ActiveCell.Value
End If
Selection.Offset(1, 0).RANGE("B2").Select

Next

End Sub

problema: al primo next mi scende giu' di due righi e si sposta su colonna C
DEL RIGO SUCCESSIVO :(
Dove e' l'errore?


alex

unread,
Oct 21, 2009, 5:04:07 AM10/21/09
to

> Mauro ho provato cosi':(naturalmente ho messo solo dei msgbox per capire
> se
> prendevo i dati giusti)
>
> Private Sub cmdstampafatture_Click()
> Dim RIGA As Integer
> Dim CL As Integer
>
>
>
> Foglio6.Activate
> RIGA = Worksheets(6).UsedRange.Rows.Count
> RANGE("B2").Select
> For CL = 2 To RIGA
> If ActiveCell.Value >= txtda.Text And ActiveCell.Value <= txta.Text Then
> MsgBox "STAMPO LA FATTURA NUM" & ActiveCell.Value
> End If
> Selection.Offset(1, 0).RANGE("B2").Select
>
> Next
>
> End Sub
>
> problema: al primo next mi scende giu' di due righi e si sposta su colonna
> C DEL RIGO SUCCESSIVO :(
> Dove e' l'errore?
>
TROVATO :)

>


Mauro Gamberini

unread,
Oct 21, 2009, 6:09:17 AM10/21/09
to
Mettiamo che io non voglio stampare una sola fattura, ma
> voglio dare la possibilita' tramite un form di decidere da che numero a
> che numero stampare.Con access, forse avrei fatto una query o avrei usato
> >= di XX oppure beetwen credo... Qui come faccio? devo farmi rigo per rigo
> e controllare un singolo valore di una cella?
>

Prova questa cosa(chiedo scusa se posto un link,
ma codice e spiegazione sarebbero troppo
lunghi):

http://www.maurogsc.eu/esemping/stampaselezione.zip

Il codice � commentato.
L'esempio utilizza i Nomi per definire le celle nelle
quali svolgere operazioni nel foglio Fatture.

La parte che carica la tabella nei Range non deve
essere modificata se le colonne sono di pi� o di meno.
Questo � solo un esempio e va adattato alle tue
esigenze.

In pratica selezioni l'anno, la prima e l'ultima fattura
che vuoi stampare e premi stampa.

Prova un po'. Grazie.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

alex

unread,
Oct 21, 2009, 10:23:02 AM10/21/09
to

> http://www.maurogsc.eu/esemping/stampaselezione.zip
>
Grazie a te mauro.Ora vado a provarlo.Fino a questa mattina mi sono
arrangiato con il codice che ti ho inviato nel post precedente e che mi dava
errore.Poi ho scoperto l'inghippo e credo di aver risolto il problema.Ora
controllo anche il tuo codice che e' sicuramente meglio del mio, magari
trovo anche la soluzione ad un altro problema: una volta scelto di stampare
devo poter scegliere stampante e numero copie, ma con il comando :
Application.Dialogs(xlDialogPrinterSetup).Show ho solo le stampanti e non ho
la rischiesta del numero copie.


Mauro Gamberini

unread,
Oct 21, 2009, 10:28:13 AM10/21/09
to

Per il numero delle copie, non serve impostare
la cosa nella stampante...

Dim lng As Long

For lng = 1 To 3

NomeFoglio.PrintOut
Next

e Stampi 3 copie.


--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


Mauro Gamberini

unread,
Oct 21, 2009, 10:38:36 AM10/21/09
to
> Dim lng As Long
>
> For lng = 1 To 3
> NomeFoglio.PrintOut
> Next
>
> e Stampi 3 copie.
>
>
<cut>

Aggiungo che quel 3 potrebbe essere una
variabile impostata da qualche parte.

Esempio terra terra:

Public Sub m()

'gestione errori
On Error GoTo RigaErrore

'dichiaro le variabili
Dim s As String
Dim lng As Long

'assegno a s il numero di stampe
s = Application.InputBox("Quante copie stampo?")

'stampo
For lng = 1 To CInt(s)
NomeFoglio.PrintOut
Next

'riga sempre eseguita
RigaChiusura:
Exit Sub

'in caso di errore
RigaErrore:
MsgBox "Valore inserito non valido."
Resume RigaChiusura

End Sub

Al posto di una InputBox puoi passare il numero
delle pagine tramite qualsiasi controllo
(ad esempio una ComboBox con all'interno
valori che tu ritieni validi).
Bah, solo alcune idee... ;-)

alex

unread,
Oct 21, 2009, 11:14:04 AM10/21/09
to
OTTIMO, ora sto provando a capire anche l'altro codice che mi hai inviato
tramite link.
Grazie mille!!

alex

unread,
Oct 21, 2009, 11:26:06 AM10/21/09
to

> La parte che carica la tabella nei Range non deve
> essere modificata se le colonne sono di pi� o di meno.
> Questo � solo un esempio e va adattato alle tue
> esigenze.

DUNque ho provato, mi va in errore quando arrivo qui:
Set rngTabella = .Range("A1").CurrentRegion
metodo range dell'ogggetto worksheet non riuscito.
Credevo fosse un problema dovuto al fatto che avevo messo un'altra colonna
al posto dell' a1 ma invece anche con il valore A1 mi da questo
problema.Naturalmente solo sul mio pgm pero' :(


alex

unread,
Oct 21, 2009, 11:46:31 AM10/21/09
to
FUNziona anche il codice del link che mi hai mandato, sono stato stupido ...
o forse un po' troppo ignorante IO.
gRAZIEE!! :)))))))))


Mauro Gamberini

unread,
Oct 22, 2009, 2:26:02 AM10/22/09
to
> FUNziona anche il codice del link che mi hai mandato, sono stato stupido
> ... o forse un po' troppo ignorante IO.
> gRAZIEE!! :)))))))))
>

Bene.
Considero chiuso il thred se non vedo
altri post.
Buon lavoro.


--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

alex

unread,
Oct 22, 2009, 4:11:11 AM10/22/09
to
> Bene.
> Considero chiuso il thred se non vedo
> altri post.
> Buon lavoro.
>
Grazie ancora, pero' ci sono alcuni passaggi che non riesco a capire e che
avrei avuto piacere di chiederti :))
Giusto per farmi una ragione di cio' che succede,imparare e non solo
scopiazzare :)


Mauro Gamberini

unread,
Oct 22, 2009, 4:18:57 AM10/22/09
to

Siamo (quasi)sempre qui.
Chiedi e ti sar� dat... ehmmm, spiegato(forse).

alex

unread,
Oct 22, 2009, 10:39:30 AM10/22/09
to

> Siamo (quasi)sempre qui.
> Chiedi e ti sar� dat... ehmmm, spiegato(forse).
>
METTo qui il codice e vicino ti chiedo le spiegazioni?

'dichiaro le variabili
Dim c As RANGE( primo problema: dichiari vairabile c con valore range
pero' poi dove gli dai il range??)
Dim v As Variant

'creo o metto riferimento agli oggetti
Set colAnni = New Collection (riferimento agli oggetti i
due fogli piu' la collection anni)
Set shDati = Worksheets("FOGLIO6")
Set shFattura = Worksheets("FOGLIO8")

With shDati
'metto il riferimento alla tabella
Set rngTabella = .RANGE("AJ1").CurrentRegion
'metto il riferimento alla prima
'colonna della tabella senza l'intestazione
Set rngA = rngTabella.Offset(1, 35).Resize( _ (io qui mi
sono spostato un po' oltre la prima colonna)
rngTabella.Rows.Count - 1, _ (qui che succede?? a cosa
serve?)
rngTabella.Columns.Count - ( _
rngTabella.Columns.Count - 1))
'ciclo la colonnaA
For Each c In rngA
'in caso di errore, ignoralo e prosegui
On Error Resume Next
'aggiungo un anno univoco alla
'Collection
colAnni.Add c.Value, CStr(c.Value) (qui aggiungi, ma non
capisco come fa lui a sapere dove sono gli anni e come li prende)
Next
End With

With Me.ComboBox1
'ciclo la Collection
'e porto gli anni in ComboBox1
For Each v In colAnni (da qui in poi
proprio mi perdo totalmente, non capisco come e' stata creata la collection)
.AddItem v
Next
End With

'Set a Nothing della variabile oggetto
Set c = Nothing

End Sub


Mauro Gamberini

unread,
Oct 22, 2009, 11:04:40 AM10/22/09
to
> Dim c As RANGE( primo problema: dichiari vairabile c con valore range
> pero' poi dove gli dai il range??)
>

la uso come item nel ciclo:
For Each c In rng

Che sta per:
per ogni cella nel range

> rngTabella.Rows.Count - 1, _ (qui che succede?? a cosa serve?)
>

Elimino la riga con l'intestazione per non portarla
nella ListBox
Guida del vb di excel, Resize.

> colAnni.Add c.Value, CStr(c.Value) (qui aggiungi, ma non capisco come fa
> lui a sapere dove sono gli anni e come li prende)
>

Sto ciclando la colonna A, cella per cella.
La collection non accetta due valori uguale
nell'index8il secondo che passo,
che *deve* essere una stringa).
Se li trova da errore, ma io
con On error resume Next gli dico
di ignorarlo r andare avanti, cos� alla
fine nella collection ho solo valori univoci.
Guida del vb di Excel, Collection.

> For Each v In colAnni (da qui in poi
> proprio mi perdo totalmente, non capisco come e' stata creata la
> collection)
> .AddItem v
>

'variabile per il ciclo
Dim lng As Long
'variabile per ciclare
'la collection
Dim v As Variant
'dichiaro la variabile per la collection
Dim col As Collection
'la creo
Set col = New Collection

'la riempio
For lng = 1 To 5
col.Add lng, CStr(lng)
'il secondo parametro(index)
'*DEVE* essere una String
Next

'leggo la collection
For Each v in col
'vedo il contenuto degli items
'della collection
MsgBox v
Next

'Set a Nothing della variabile ogggetto
'la collection *�* un oggetto
Set col = nothing

alex

unread,
Oct 22, 2009, 11:20:53 AM10/22/09
to
Grazie, tu sei chiarissimo, sono io che sono un povero ignorante e non
riesco a farmi entrare nella testa tutte queste nozioni :(

>
> la uso come item nel ciclo:
> For Each c In rng
>
> Che sta per:
> per ogni cella nel range
>
>> rngTabella.Rows.Count - 1, _ (qui che succede?? a cosa serve?)
>>
>
> Elimino la riga con l'intestazione per non portarla
> nella ListBox
> Guida del vb di excel, Resize.
>
>> colAnni.Add c.Value, CStr(c.Value) (qui aggiungi, ma non capisco come fa
>> lui a sapere dove sono gli anni e come li prende)
>>
>
> Sto ciclando la colonna A, cella per cella.
> La collection non accetta due valori uguale
> nell'index8il secondo che passo,
> che *deve* essere una stringa).
> Se li trova da errore, ma io
> con On error resume Next gli dico

> di ignorarlo r andare avanti, cos� alla

> 'la collection *�* un oggetto

0 new messages