Immagini in ListBox



  • Immagini in ListBox
    di Gava (utente non iscritto) data: 14/09/2015 12:27:05

    Buongiorno a tutti,

    scusate ma non sono riuscito a trovare molto in giro. Avrei questi quesiti. Se potreste indirizzarmi alla fonte ve ne sarei grato
    1) Come faccio ad inserire immagini in formato *.png in una ListBox?
    2) Se nella listBox sono presenti dati in colonne e righe, è possibile anche aggiungere immagini?....
    grazie in anticipo

    Vi giro il codice per l'inserimento di colonne e righe


     
    Private Sub UserForm_Activate()
    Dim col As Object
    ur = Range("S:S").End(xlDown).Row
    UC = ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers).Column - 4
    cont = 4
    ListBox1.ColumnCount = cont 'ora impostiamo il numero di colonne da visualizzare nella ListBox1
    
    Dim iCol() As Variant  'ora si imposta la matrice "iCol" di tipo Variant
    Dim A
    ReDim iCol(1 To cont) 'dimensioniamo la matrice indicando il numero di elementi che la comporranno (da 1 e fino a '"cont") (matrice dinamica)
    A = 1 'inizializiamo il contatore "A" della matrice a 1
    For Each cell In ActiveSheet.Range(Cells(1, 19), Cells(1, UC)) 'e per ogni cella nell'intervallo specificato
    If cell.Columns.Hidden = False Then  'se la colonna della cella ora letta è visibile, allora
    iCol(A) = cell.Column   'aggiungiamo alla variabile "iCol" nell'indice di matrice corrispondente ad "A", il numero di 'colonna ora letta
    A = A + 1  'quindi si incrementa di 1 il contatore "A"
    End If
    Next   'e si passa alla cella successiva
    'sotto: ora si inizia un doppio ciclo For Next: il ciclo esterno si occupa di definire quante righe scorrere, e dovremo 'iniziarlo da zero perchè lo stesso contatore "N" servirà anche per impostare l'indice iniziale di List nella ListBox che 'inizia appunto da zero e non da 1
    For n = 0 To ur - 1
    l = iCol(LBound(iCol))  'con "L" prendiamo il numero di colonna memorizzato nel limite inferiore (LBound) della 'matrice "iCol", e ci serve per definire quale colonna ("L") della cella N + 3 (cioè dalla riga 3 del foglio) iniziare il 'metodo AddItem
    ListBox1.AddItem ActiveSheet.Cells(n + 3, l)
    'ora inizia il ciclo interno che scorrerà i numeri di colonna memorizzati nella matrice "iCol", caricando la ListBox1 'tramite List(indice riga, indice colonna) con i valori contenuti nelle celle(riga N+3, colonna "A" di "iCol")
    For A = LBound(iCol) To UBound(iCol)
    ListBox1.List(n, A - 1) = Cells(n + 3, iCol(A))
    Next: Next
    End Sub



  • di patel data: 14/09/2015 13:10:24

    inutile allegare il codice senza allegare il file con la userform





  • di totygno71 data: 14/09/2015 14:51:33

    cit "1) Come faccio ad inserire immagini in formato *.png in una ListBox?
    2) Se nella listBox sono presenti dati in colonne e righe, è possibile anche aggiungere immagini?....

    Dubito sia fattibile, cmq mi piacerebbe sbagliarmi...
    Toty



  • di alfrimpa data: 14/09/2015 15:08:52

    Penso anch'io che non sia fattibile.

    E poi per inserire delle immagini occorrono dei controlli "Immagine" che le ospitino tramite il metodo LoadPicture.

    Quindi cosa facciamo? Mettiamo dei controlli "Immagine" in una Listbox?

    Non mi pare che abbia molto senso.

    Bisogna capire qual è l'obiettivo finale di Gava e vedere se vi sono strade alternative.

    Ovviamente anche a me piacerebbe essere smentito

    Alfredo





  • di patel data: 14/09/2015 15:11:09

    chiarisco subito che il mio è un consiglio generale, non ho la soluzione





  • di Gava (utente non iscritto) data: 14/09/2015 15:14:15

    Si. L'obbiettivo è quello di riassumere i dati di tabella ai quali competono le immagini in una userform, che nn è detto debba essere per forza una Listbox. Se avete altre idee sono ben accette.
    Io sono un po' forzato per VBA
    Vi ringrazio in anticipo



  • di alfrimpa data: 14/09/2015 15:32:30

    E comunque il consiglio di Patel (che saluto) di allegare un file secondo me è sempre valido

    In linea molto generale si potrebbe pensare ad una userform che contenga n textbox ed n controlli "Immagine".

    Le textbox servirebbero a visualizzare i dati del foglio di lavoro ed i controlli immagine le relative immagini (magari memorizzate in una directory specifica.

    Ma, ripeto, è solo un'idea tutta da costruire e verificare.

    Alfredo






  • di alfrimpa data: 14/09/2015 19:07:57

    Una cosa del genere sarebbe assai facilmente realizzabile con Access (e lo dico perchè ho fatto una cosa del genere).

    Access consente di memorizzare nei campi di una tabella anche un'immagine per cui si può associare ogni immagine ad ogni singolo record e poi visualizzare i dati (ivi comprese le immagini) con una form.

    In Excel la strada è, a mio modo di vedere, decisamente più complicata.

    Alfredo





  • di Vecchio Frac data: 14/09/2015 19:10:31

    Decisamente, ma il controllo ListBox (base) esiste anche in Access e no, non ci si possono infilare delle immagini. Sicuramente ci sono in giro controlli personalizzati che consentono di fare questo.