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

Modifica listbox con più colonne

123 views
Skip to first unread message

by....@gmail.com

unread,
Jul 27, 2021, 12:44:50 AM7/27/21
to
Ciao a tutti ho un problema con una listbox, dovrei allineare i dati della valuta, come sapete i dati numerici non vengono allineati.

il problema che la listbox in oggetto ha più di 10 colonne, fino a 10 colonne non avevo problemi in quanto con "Additem" risolvevo il problema.
superando le 10 colonne non posso usare "Additem" in quanto tale metodo non lo consente, per cui devo usare "Rowsource".

però non ho più l'allineamento dei dati numerici, vorrei modificare le sole colonne dei dati numerici della listbox, ma non me lo permette.

questo il codice che sto cercando di usare

r = uR(SH1.Name, 1) 'ultima riga
Spz = 13 'spazi numerici
With ListBox1
.Clear
.Font = "Consolas"
.ColumnCount = 18
.ColumnWidths = "20;50;50;70;70;50;50;50;50;70;40;40;40;40;40;40;40;40"
.ColumnHeads = True 'l'ho riabilitata perche gli passo il RowSource
.RowSource = SH1.Range("A2:R" & r).Address
For x = 0 To .ListCount - 1 'ciclo i record le colonne interessate sono solo 4-5 e 10-11
.List(x, 3) = Spz - Len(.List(x, 3))
.List(x, 3) = String(LL, " ") & .List(x, 3)
LL = Spz - Len(Format(Cells(x, 5), "#,##0.00 €"))
.List(x, 4) = String(LL, " ") & Format(SH1.Cells(x, 5), "#,##0.00 €")
LL = Spz - Len(Cells(x, 10))
.List(x, 9) = String(LL, " ") & Cells(x, 10)
LL = Spz - Len(Format(Cells(x, 11), "#,##0.00 €"))
.List(x, 10) = String(LL, " ") & Format(SH1.Cells(x, 11), "#,##0.00 €")
Next x

l'errore mi dice "Impossibile impostare la proprietà list, autorizzazione negata"

conoscete qualche altro metodo per allineare i dati della listbox con più di 10 colonne?

posso anche allegare il file
Ciao By Sal (8-D

Bruno Campanini

unread,
Jul 27, 2021, 6:14:16 PM7/27/21
to
by....@gmail.com formulated the question :
Mai usato ListBox, nè in Access né in Excel.
Ma prova a inviare il file: un'alternativa esiste (quasi) sempre.

Bruno

casanmaner

unread,
Jul 28, 2021, 6:59:51 AM7/28/21
to
Il problema è che popoli la listbox tramite "RowSource".
In questo caso poi non puoi modificare la proprietà "List".

Prova a inserire i valori così:

.List = SH1.Range("A2:R" & r).value

A quel punto dovresti poter lavoare su List nei sui elementi, tra l'altro ciclando proprio la List.

by....@gmail.com

unread,
Jul 28, 2021, 8:29:26 AM7/28/21
to
Il giorno mercoledì 28 luglio 2021 alle 12:59:51 UTC+2 casanmaner ha scritto:
> Il giorno martedì 27 luglio 2021 alle 06:44:50 UTC+2 by....@gmail.com ha scritto:

Ciao a tutti Bruno ecco il link al file

http://www.filedropper.com/userformlistbx

Ciao Casanmaner
Il problema è che popoli la listbox tramite "RowSource".
In questo caso poi non puoi modificare la proprietà "List".

non posso caricare i dati con "Additem" perche sono più di 10 colonne e mi serve formattare alcune colonne numeriche per allineare i dati.
in un primo tempo ho usato "Additem" come vedrai nel codice (commentato) ma poi sono aumentate le colonne e non posso allineare più i dati

però provo a vedere come mi hai detto

Prova a inserire i valori così:

.List = SH1.Range("A2:R" & r).value

A quel punto dovresti poter lavorare su List nei sui elementi, tra l'altro ciclando proprio la List.

e vedere se riesco a farlo.

per il momento un saluto By Sal (8-D


by....@gmail.com

unread,
Jul 28, 2021, 10:37:54 AM7/28/21
to
Ciao a tutti, grazie allo spunto di Casanmaner ci sono riuscito a fare l'allineamento, ecco come impostare la stringa per l'allineamento, premesso che "Spz = 13" spazi la lunghezza totale.

ecco il ciclo, ho inserito anche il Record-0zero per allineare anche le intestazioni dei campi numerici

.List = SH1.Range("A1:R" & r).Value
For x = 0 To .ListCount - 1 'ciclo i record le colonne interessate sono solo 4-5 e 10-11
.List(x, 3) = String(Spz - Len(Format(.List(x, 3), "#,##0.00 €")), " ") & Format(.List(x, 3), "#,##0.00 €")
.List(x, 4) = String(Spz - Len(Format(.List(x, 4), "#,##0.00 €")), " ") & Format(.List(x, 4), "#,##0.00 €")
.List(x, 9) = String(Spz - Len(Format(.List(x, 9), "#,##0.00 €")), " ") & Format(.List(x, 9), "#,##0.00 €")
.List(x, 10) = String(Spz - Len(Format(.List(x, 10), "#,##0.00 €")), " ") & Format(.List(x, 10), "#,##0.00 €")
Next x

faccio 2 volte il Format altrimenti non mi prende gli spazi compresi nella formattazione
non conoscevo che potevo inserire il range direttamente in List, in questo modo gli Items sono modificabili.

un Grazie e credo che il post sia risolto Ciao By Sal (8-D
0 new messages