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



Febbraio 20, 2008 a 9:39 pm
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 ….
… comunque và bene anche così, è provando e riprovando che si impara.
Veniamo al problema
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
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
Febbraio 22, 2008 a 2:23 pm
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
Febbraio 22, 2008 a 8:11 pm
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
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.
Febbraio 24, 2008 a 9:22 pm
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
Febbraio 24, 2008 a 10:18 pm
ti ho mandato il file.
Grazie
Ciao
Febbraio 25, 2008 a 9:03 am
l’errore è molto semplice
hai copiato la routine e l’hai incollata nell’editor di VBA, solo che la formattazione del forum ti cambia il carattere delle virgolette”".
e vedrai che l’errore non compare più.
Vai nel codice della Userform1 e cambia gli apici dell foglio (”conti”
ciao
Febbraio 25, 2008 a 9:43 am
Grazieeeeeeeeeeeeeeeee….
non ci sarei mai arrivato….
Ci sentiamo presto
grazie
Ciao
Augusto
Febbraio 25, 2008 a 8:12 pm
prego … a presto