The Alexsandra Spaces

Internet - Sicurezza - Excel & VBA

Excel :: Augusto

Pubblicato da Alexsandra su Febbraio 20, 2008

Questa sezione è riservata a Augusto prego gli altri utenti di postare quì consigli, suggerimenti esempi ma non altre problematiche…. Grazie ••• Ritorna alla pagina precedente •••

Questo è il quesito posto:

Ho fatto in modo che posizionandomi su alcune celle si apre un form che contiene una listbox.
Fin qui tutto funziona. ora vorrei che la listbox si riempisse con dei valori presi da un altro foglio.
Mi esce però questo errore” Errore run-time 9. Indice non incluso nell’intervallo”
Queste sono le istruzioni che generano questo errore:Private Sub UserForm_Activate()
Dim i As Long
Select Case Sheets(”conti”).Cells(2, 2)
Case Empty
i = 2
If Not (Sheets(”conti”).Cells(2, 2) = Empty) Then
Do Until Sheets(”conti”).Cells(i, 2) = Empty
UserForm1.ListBox1.AddItem (Sheets(”conti”).Cells(i, 2).Value)
i = i + 1
Loop
End If
Case Else
With Sheets(”conti”)
UserForm1.ListBox1.List = .Range(.Cells(2, 2), .Cells(2, 2).End(xlDown)).Value
End With
End Select
End Sub

8 Risposte a “Excel :: Augusto”

  1. Alexsandra Dice:

    Mi fa piacere vedere che segui questo mini corso e che ti cimenti da solo alla conoscenza del VBA, però …. potevi postare prima di 6 ore di incavolamenti …. :D … comunque và bene anche così, è provando e riprovando che si impara.

    Veniamo al problema

    Ho fatto in modo che posizionandomi su alcune celle si apre un form che contiene una listbox.

    Questo passo poi me lo spieghi come lo hai fatto (che procedimento o codice hai usato).

    Per popolare un listbox non userei un Select Case quando la condizione è una sola, puoi farlo in maniera molto più semplice

    Private Sub UserForm_Activate()
    If ListBox1.ListCount >= 1 Then ListBox1.Clear
    i = 2
    Do Until Sheets(”conti”).Cells(i, 2).Value = Empty
    With Sheets(”conti” ;)
    elemento = .Cells(i, 2).Value
    End With
    ListBox1.AddItem elemento
    i = i + 1
    Loop
    ListBox1.ListIndex = 0
    End Sub

    Quando hai la form attiva non ti serve richiamarla (UserForm1.ListBox1.AddItem)e come vedi io uso una matrice (elemento), faccio un Loop della colonna 2 dalla riga 2 finchè non trovo una cella vuota, poi aggiungo la matrice al listbox.

    Probabilmente hai usato un Select che avrai visto quando l’ho spiegato per porre delle condizioni, ma se ti servono delle condizioni (se la cella di partenza è vuota) la devi usare in altro modo.
    Se hai bisogno di altri chiarimenti postali.

    ciao

  2. Augusto Dice:

    Ciao Alexsandra,
    innanzi tutto ti ringrazio per la tua risposta.
    Ho copiato il tuo codice ma mi va in errore all’istruzione che ho trascritto sotto con il solito messaggio “indice non incluso nell’intervallo”:

    Do Until Sheets(”conti”).Cells(i, 2).Value = Empty

    In debug, se mi posiziono sopra a (”conti” ;) mi dice: conti=vuoto

    Non so più cosa fare.
    Grazie mille, sei gentilissima.
    Ciao

    Augusto

  3. Alexsandra Dice:

    ci sarebbe ancora da capire quanto hai detto :(Ho fatto in modo che posizionandomi su alcune celle si apre un form che contiene una listbox.)
    é difficile per me capire come hai usato il codice, ma per popolare un listbox quel codice và bene, lo puoi semplificare

    Private Sub UserForm_Activate()
    Dim i As Integer
    i=2
    Do Until Sheets(”conti”).Cells(i, 2).Value = Empty
    With Sheets(”conti” ;)
    ListBox1.AddItem (Sheets(”conti”).Cells(i, 2).Value)
    i = i + 1
    Loop
    End Sub

    se commentiamo il codice vedi che facciamo un loop partendo dalla riga 2 e colonna 2 finchè non troviamo una cella vuota, ad ogni loop con il comando AddItem lo aggiungiamo al listbox, poi incrementiamo il valore (i=i+1) della riga e continuiamo a scorrere le righe.
    Domanda: ti và in errore quando clicchi sul list o proprio all’avvio della form?
    all’inizio del modulo dove c’è il codice hai inserito qualche dichiarazione (Option explicit)

    se non risolvi mandami via email il file che te lo guardo. In sostanza quell’errore è dovuto al fatto che nella riga 2 alla colonna 2 non c’è nessun dato.

  4. augusto Dice:

    Grazie Alexsandra, sei gentilissima.
    Ti manderei volentieri il file ma non riesco a trovare nel sito il tuo indirizzo mail.
    (sarò super imbranato ma non lo vedo).
    Se mi dai la mail te lo mando.
    Grazie ancora e scusa il distubo.
    Ciao

  5. augusto Dice:

    ti ho mandato il file.
    Grazie
    Ciao

  6. Alexsandra Dice:

    l’errore è molto semplice :D hai copiato la routine e l’hai incollata nell’editor di VBA, solo che la formattazione del forum ti cambia il carattere delle virgolette”".
    Vai nel codice della Userform1 e cambia gli apici dell foglio (”conti” ;) e vedrai che l’errore non compare più.

    ciao

  7. Augusto Dice:

    Grazieeeeeeeeeeeeeeeee….
    non ci sarei mai arrivato….
    Ci sentiamo presto :-)
    grazie
    Ciao
    Augusto

  8. Alexsandra Dice:

    prego … a presto :)

Lascia una Risposta

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>