Estrarre Dati da un elenco ListBox

Carissimi,

per prima cosa vi auguro un felice e ottimo 2015 . . .

grazie infinite per i vostri preziosissimi suggerimenti che mi sono serviti tantissimo.

Per quanto scritto precedentemente, attraverso una tabella filtrata inviavo i dati dal foglio attivo filtrato in una listbox. Ma ora il problema è che su listbox come posso ricercare rapidamente un record senza utilizzare la sottostante ruotine, la quale funziona ma è molto molto lenta! ?

Routine scritta:

 

With UserForm1

 For I = 1 To .ListBox1.ListCount
       .ListBox1.ListIndex = I - 1
       If .ListBox2.Text = Contiene$ Then
          .ListBox2.ListIndex = I - 1
          Exit For
       End If
  Next I

End With

 nota: Contiene$  è la stringa che devo ricercare nel listbox1, dove boundcolumn=3 e preleva il dato dalla colonna "c" del foglio attivo filtrato. Ripeto tutto funziona perfettamente ma è molto molto lenta, in quanto ci sono centinaia e centinaia di dati nel listbox1!

Sono uno studente di 5B istituto tecnico Medi Spec. Informatica, e la prof. mi ha fatto un cazziatone (sgridato) perchè dice che la mia routine non vale niente, mi aiutate per favore?

Sempre grazie infinite

Carlo Raffaele

 

Informazioni domanda


Ultimo aggiornamento febbraio 26, 2018 Visualizzazioni 539 Si applica a:
Risposta

Grazie Mauro, i tuoi consigli sono sempre validi.

Un'ultima cosa.... un matrice, per esempio

Dim C (10000) as Integer,

come la posso azzerare? Così da liberare spazio di steck in memoria.

il metodoo Nothing mi da errore!!!

Grazie sempre.

Buona settimana

Carlo Raffaele

Non liberi nulla. La memoria per una matrice è assegnata in base alla dimensione che le assegni. Che poi ci sia o meno un valore, non importa.

Public Sub m()

    Dim myArray() As Variant
    Dim lng As Long
   
    ReDim myArray(100)
    For lng = 0 To 100
        myArray(lng) = "Valore: " & lng
    Next
   
    MsgBox myArray(50)
   
    'ridimensiono la matrice
    ReDim myArray(100)
   
    'nessun valore anche se la matrice è dimensionata e la memoria occupata
    MsgBox myArray(100)
   
End Sub

Modificando l'ultima parte così, la ridimensioni a 0:

    'ridimensiono la matrice
    ReDim myArray(0)
   
    'nessun valore anche se la matrice è dimensionata
    MsgBox myArray(0)

Quindi lo spazio di memoria assegnato sarà quello della nuova dimensione.

Per myArray(1) otterrai un errore.

Ma forse non ho capito.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.