cerca dati listbox



  • cerca dati listbox
    di Dodi (utente non iscritto) data: 15/10/2017 13:44:35

    Salve chiedo aiuto per risolvere un problema. Faccio breve sunto e premetto che sono un autodidatta, ho una userform che utilizzo x archiviare dati in un foglio excel, e nella medesima ho una Listbox che si popola con il codice sottostante forminto da Alfredo tempo addietro. Ora cosa vorrei fare? Quando inserisco i dati e li archivio, vorrei vedere nella listbox l'ultima riga dei dati inseriti facendo scorrere in alto i dati precedenti, insomma mi serve qsta cosa per 2 motivi, 1 per vedere se realmente i dati sono archiviati e 2 per vedere quali dati ho inseriti e procedere con le archiviazione, senza chiudere la userform e visionare gli ultimi dati. Grazie in anticipo
     
    Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim ur As Integer
    Dim riga As Integer
    riga = 1
    ur = Sheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 0 To ur
        ListBox1.AddItem
        ListBox1.List(i, 0) = Cells(riga, "A")
        ListBox1.List(i, 1) = Cells(riga, "B")
        ListBox1.List(i, 2) = Cells(riga, "C")
        ListBox1.List(i, 3) = Cells(riga, "d")
        riga = riga + 1
    Next i
    End Sub



  • di alfrimpa data: 15/10/2017 14:43:37

    Ciao Dodi

    Ora sono fuori e non ho il pc ma se alleghi un filevdi esempio con la tua userform ci posso provare.

    Alfredo




  • filtra dati listbox
    di Dodi (utente non iscritto) data: 15/10/2017 15:48:16

    Ciao Alfredo ti ho allegato il file. Grazie per la risposta



  • di Zer0Kelvin data: 15/10/2017 16:21:52

    Ciao a tutti.
    Io invece sono, purtroppo, costretto a casa; quindi...
    Se ho capito bene, puoi modificare così il codice della userform (vedi sotto)
    dopodichè è sufficiente inserire una chiamata a CaricaDati dove più ti fa comodo.
    CaricaDati ricarica i dati e si posiziona sull'ultima riga. 

    **EDIT**
    Modificato il codice dopo aver visionato il file; puoi inserire la chiamata alla fine di cmdOK_Click
     
    Private Sub CaricaDati()
    Dim rDati As Range
        With Sheets("Foglio1")
            Set rDati = .Range("B1:E" & .Cells(.Rows.Count, 2).End(xlUp).Row)
        End With
        With ListBox1
            .Clear
            .ColumnCount = 4
            .List = rDati.Value
            .ListIndex = .ListCount - 1
        End With
        Set rDati = Nothing
    End Sub
    
    Private Sub UserForm_Initialize()
        CaricaDati
    End Sub
    



  • di alfrimpa data: 15/10/2017 16:49:23

    @Zerokelvin

    Marco sono felice di rivederti sui forum

    Alfredo





  • di Zer0Kelvin data: 15/10/2017 16:53:12

    Grazie Alf, salutoni.


  • carica dati listbox
    di dodi (utente non iscritto) data: 15/10/2017 18:16:27

    Ciao zerokelvin
    Grazie per la risposta, ho provato e mi da errore sul codice caricadati,
    Forse sbaglio qualcosa volevo provare a vedere se faceva al mio caso. Puoi rimandarlo il file modificato così provo.


  • cerca dati listbox
    di dodi (utente non iscritto) data: 15/10/2017 18:37:33

    Cmq aspetto anche la soluzione di Alfredo visto che mi ha fornito a suo tempo il codice di popolamento della listbox.




  • di Zer0Kelvin data: 15/10/2017 18:44:53

    Inviato il file; da un test veloce sembra funzionare correttamente.
    Che errore ti dà e che versione di Excel usi?


  • cerca dati listbox
    di dodi (utente non iscritto) data: 15/10/2017 20:17:46

    Uso excel 2016


  • cerc dati listbox
    di Dodi (utente non iscritto) data: 15/10/2017 21:00:34

    Ho testato il file inviato da zerokelvin su excel 2010 e funziona, centrando l'obbiettivo, ma Faccio una domanda . C'è un modo per evidenziare l'ultimo dato della listbox, come nel file? Pero' qsta volta la listbox si popola scrivendo il range nelle proprietà nella voce Rowsource? Sicuramente mi risponderai utilizza l'esempio appena inviato. Ma mi spiego meglio ho un file con ricerche criteria ecc ecc ho già provato ad adattare il codice del file appena ricevuto ma mi va in conflitto. Quindi se c'e un modo puoi gentilmente essermi di aiuto?
    Allego il file esempio dati . Se c'è un modo me lo rimandi con la soluzione? Grazie in anticipo



  • di Zer0Kelvin data: 15/10/2017 23:38:52

    Purtroppo l'utilizzo di RowSource crea problemi quando si cerca di modificare la proprietà List ed è uno dei motivi per cui è pochissimo usata.
    Se devi caricare la ListBox con un range, il sistema più pratico è quello che ho usato nel precedente esempio.
    Nel file che hai inviato, dopo aver cancellato il valore assegnato a RowSource aggiungere questo codice nella userform:
     
    Private Sub UserForm_initialize()
        With Me.ListBox1
            .List = Sheets("foglio1").Range("B1:H2000").Value
        End With
    End Sub



  • di Zer0Kelvin data: 15/10/2017 23:43:28

    In linea di massima, per inizializzare qualunque controllo in una userform, è preferibile usare l'evento Userform_Initialize (che si verifica quando la userform viene caricata in memoria) piuttosto che usare valori preimpostati in fase di progetto.


  • cerca dati listbox
    di Dodi (utente non iscritto) data: 16/10/2017 00:00:38

    Son fuori e non ho modo di testarlo, ma da quello che mi hai scritto posso capire che il codice che mi hai inviato popola la listbox ma non mi evidenzia l'ultimo dato della listbox, o sbaglio?



  • di Zer0Kelvin data: 16/10/2017 00:14:40

    Ho aggiunto l'istruzione per evidenziare l'ultima riga della listbox ma, se vi sono righe vuote alla fine occorre procedere diversamente.
    Se è così e non hai bisogno di caricare effettivamente tutto il range puoi usare il metodo del file precedente, l'importante è eliminare il valore in RowSource.
     
    Private Sub UserForm_initialize()
        With Me.ListBox1
            .List = Sheets("foglio1").Range("B1:H2000").Value
            .ListIndex = .ListCount - 1
        End With
    End Sub


  • cerca dati listbox
    di Dodi (utente non iscritto) data: 16/10/2017 12:41:40

    Buon giorno ZerOkelvin
    Ho visto il codice che mi hai inviato ma ancora lo devo testare, così come è scritto se non erro mi evidenzia l'ultima riga del range cioè la riga 2000 -1 (1999)
    O sbaglio?
    Non c'è un modo?



  • di Zer0Kelvin data: 16/10/2017 12:46:19

    Come ti ho scritto sopra, una volta eliminato RowSource, puoi utilizzare lo stesso codice del primo file.
    Se, invece, le esigenze sono diverse, devi specificare meglio cosa devi fare.



  • di Dodi (utente non iscritto) data: 16/10/2017 14:57:25

    Ho fatto come mi hai suggerito. Grazie per l'aiuto ho risolto.


  • cerca dati listbox
    di Dodi (utente non iscritto) data: 18/10/2017 12:30:23

    Buon giorno ad Alfredo e Zer0kelvin

    Visto che siete stati grandi precedentemente a risolvermi dei problemi con le listbox. Volevo chiedere a chi mi può dare una mano a risolvere un altro problema che mi assilla dal pensare e cercar di trovare una soluzione.
    Mi spiego meglio. Ho un foglio di excel con dati. Per filtrare i dati e sommare le colonne uso una Listbox. Ma ho un problema, in pratica cosa vorrei fare con la list box, vorrei fare delle selezioni multiple. Allego il file.
    In pratica cosa vorrei fare. Nella textbox fine mese vorrei filtrare il mese, poi a seguire il dipendente o attrezzatura o data, insomma filtrare casualmente e cercare dati a cascata, spero di esser stato chiaro, penso che si usa il criteria ma ho fatto vari tentativi con scarsi successi. Ringrazio anticipatamente


  • cerca dati listbox
    di dodi (utente non iscritto) data: 18/10/2017 12:35:29

    Spero che mi date una mano e mi sistemate il file è me lo rinviate corretto. Il file e' listbox_filtromult