Combobox Più Colonne

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
by sal
00giovedì 18 luglio 2013 17:26
come realizzarla
Chi usa le Userform di seguito "Form", molte volte vorrebbe che la finestra della tendina conterrebbe non una colonna ma più colonne.

non tutti sanno che è possibile farlo sfruttando le Proprietà della stessa combobox: questa è l'immagine della finestra delle proprietà a dx della Form:



come si vede ha molte voci nelle proprietà, ma non necessariamente dobbiamo utilizzarle tutte, solo alcune, quelle evidenziate, che sono le necessarie.



le voci sono

1) ColumnCount
2) ColumnHead
3) ColumnWidths
4) ListWidths
5) RowSource

Parliamo prima della n° 2 "ColumnHeads" che significa se si vogliono le intestazioni delle Colonne di Default e messa a False, cioè non visibile, se si mette a True allora la prima riga della finestra diventerà l'intestazione delle Colonne/a, che resterà fissa e non si sposta cono lo scorrere dell'elenco.

ColumnCount
Già la parola lo dice numero di colonne, di default è messa ad 1 colonna, ma visto l'argomento di cui parliamo, qui dobbiamo intervenire se vogliamo aumentare le colonne.

una piccola nota: molte volte in un elenco ci sono anche colonne che non vogliamo far vedere, però se una o più colonne sono dopo quella che non vogliamo far vedere, dobbiamo includere anche questa colonna che non vogliamo far vedere nel conteggio.

un esempio abbiamo un elenco di 10 colonne e la 5 e la 7 non vogliamo che si vedano, a questo punto dobbiamo scrivere al posto dell'1 il 10 comprendente alche la 5 e la 7, non possiamo scrivere 8, perche il conteggio si fermerebbe all'ottava colonna dell'elenco.

la larghezza delle colonne da nascondere deve essere messa a 0zero

ColumnWidths
Questa proprietà stabilisce la larghezza che deve visualizzare ogni colonna, di default non ha dimensione perchè quando si tratta di 1 sola colonna Excel in automatico stabilisce la larghezza della colonna.

Ma quando ne sono di più dobbiamo essere noi a dire ad Excel come vogliamo spaziare le colonne, le colonne sono misurate i Punti "pt", ma noi possiamo definirle normalmente ci pensa poi Excel ad inserire la misura.

detto questo, sapendo la nostra larghezza di ogni colonna, andiamo a scrivere le misure, ma anche se non la sappiamo, scriviamo dei numeri che poi inseguito potremmo sempre modificarli, certo che se sappiamo che la colonna 3 contiene gli indirizzi non scriveremo 20, ma 200 o 250 visto che è più larga:

80;80;150;200;0;120;0;60;60;60

che Excel trasformerà in

80pt;80pt;150pt;200pt;0pt;120pt;0pt;60pt;60pt;60pt


Noterete 3 cose il "pt" inserito da Excel ed il separatore, delle varie colonne, che deve essere ";" punto e virgola, se inserite il doppio punto non lo leggerà ed andrà in errore, la 3° cosa i due valori 0zero che non sono altro che le Colonne 5 e 7 che abbiamo anzidetto, quindi ogni colonna che non vorremmo vedere dobbiamo mettere come valore 0zero, in questo modo anche se sarà presente ma avendo larghezza 0zero non la vediamo.

ListWidths
Questa proprietà dimensiona la finestra, cioè la larghezza della tendina, di norma si fa la sommatoria di tutte le larghezze della proprietà precedente e si inserisce 810, questa dovrebbe essere la sommatoria di sopra, l'ho fatta a mente, ma possiamo anche farla più piccola perche ci troviamo a bordo schermo o non vogliamo una finestra cosi larga, se la indichiamo più piccola compare in basso una barra di scorrimento orizzontale per spostarci a dx e vedere le altre colonne.

RowSource
Anche questa proprietà deve essere diversa dal solito, invece di indicare una sola colonna deve indicare tutto l'elenco.

Ricordandosi però della proprietà "ColumnHead" se è messa a True, se è messa a True deve essere indicata anche la riga delle intestazioni, altrimenti prenderà la prima voce come intestazione.

per 1 colonna senza intestazione

Range("A2:A200").Address


per più colonne senza intestazione la prima la seconda con l'intestazione

Range("A2:I200").Address
Range("A1:A200").Address


logico che questi sono i comandi da dare in VBA, se vogliamo scrivere direttamente nella scheda delle proprietà dovremmo scrivere:

"A1:A200"

senza il resto

per il momento finisco qui, se ci sono altre domande cercherò di chiarirle.

Ciao By Sal [SM=x423051]



Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 16:58.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com