Condividi tramite

listbox AddItem, index

Anonimo
2013-03-28T11:50:33+00:00

Buon giorno,

sto provando a creare una listBox con struttura ad albero, facendo una "libera interpretazione"

del modello di Riorgio Rancati che ho trovato sul sito comune (http://web.mclink.it/MC5884/index.html).

sul mio pc, office 2007 tutto va bene, ma quando trasferisco il file su i pc dell'ufficio con office 2003

all'istruzione me.listbox additem [stringa da inserire],[index] mi da l'errore "Indice non incluso nell'intervallo" o qualcosa di simile.

Mi spiego meglio:

al caricamento della listBox visualizzo l'elenco dei records padre (superiore), che identifico

con livello 0 inserito come colonna nascosta (0 cm) della listbox. Graficamente il record padre è preceduto da un +.

Al doppio click sulla listbox, controllo il livello del record

se il livello=0 allora

Registro nella variabile (tipo long) RigoP il rigo in cui si trova il record selezionato

RigoP=me.listBox.ListIndex

Copio il record selezionato nella variabile Dummyold (tipo stringa) cambiando il livello e il segno da + a -

dummyold=me.listbox.column(0)

if me.listBox.Column(1)=0 then

dummyold=dummyold & ";" & 1   'livello

dummyold=dummyold &";" & "-"  'segno

end if

Elimino il rigoP

me.lisbox.remuveitem (rigoP)

Inserisco nello stesso rigo il record padre modificato dummyold

me.listbox.additem dummyold,RigoP

Inserisco uno per uno i record figli (le sedi del record padre) nel rigo RigoP+1

(le sedi devono comparire sotto la voce padre)

RigoF = CLng(rigoP) + 1

Me.listbox.AddItem dummy, RigoF

Qui mi da errore, non mi consente di aggiungere l'item, ma se tolgo

l'index (rigoF), mi aggiunge l'item ma alla fine della lista quindi

la sede non è più visivamente vicina al record dal quale dipende.

Grazie in anticipo

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-04-03T15:02:46+00:00

Ciao Giorgio e grazie dell'interessamento.

Dunque il messaggio è:

"impossibile aggiungere questo elemento.Indice troppo grande"

ho verificato, seguendo le tue istruzioni, il listcount della lista e:

RigoF=2

me.listBox.ListCount=2 (sono presenti solo 2 item: item 0 e item 1)

Il messaggio di errore non compare quando me.listBox.listcount è maggiore di RigoF.

In pratica se provo ad aggiungere il rigoF dopo l'ultimo item visualizzato in lista mi da l'errore.

Questo errore lo da solo sull'access 2003, mentre in access 2007 va tutto liscio come l'olio.

Ciao Elena\_Elena,

è molto strano, con Access2002 a me funziona e mi suona strano che solo con Access2003 non vada.

In ogni caso la tua affermazione:


RigoF = CLng(rigoP) + 1

Me.listbox.AddItem dummy, RigoF

Qui mi da errore, non mi consente di aggiungere l'item, ma se tolgo

l'index (rigoF), mi aggiunge l'item ma alla fine della lista quindi

la sede non è più visivamente vicina al record dal quale dipende.


non è proprio esatta, visto che il problema lo hai quando (tua Cit):


In pratica se provo ad aggiungere il rigoF dopo l'ultimo item visualizzato in lista mi da l'errore.


per inserire l'elemento alla fine della lista puoi risolvere sostituendo questa riga da così:

Me.listbox.AddItem dummy, RigoF

a così:

If RigoF<Me.listbox.ListCount Then

   Me.listbox.AddItem dummy, RigoF

Else

   Me.listbox.AddItem dummy

End If

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-04-10T14:07:45+00:00

    ho verificato, utilizzando l'istruzione

    if rigoF>me.listbox-1 then

    me.listbox.abbitem dummy

    else

    me.listbox.abbitem dummy, rigoF

    end if

    access 2003 non mi da problemi.

    Ho provato anche il form_treeVieW sull'access 2003 e non mi ha dato nessun

    problema nell'inserimento dei nuovi items anche aggiunti dopo l'ultimo item visualizzato nella lista...

    Sicuramente ho fatto io qualche pasticcio!

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-04-04T08:53:01+00:00

    Grazie Giorgio,

    Credo proprio che inserendo il codice che mi hai mandato dovrebbe funzionare, lo scoprirò quando

    lo proverò sui computer con access 2003.

    Rispetto alla contraddizione dei miei messaggi è dovuta la fatto che nel primo messaggio non mi ero accorta  che l'istruzione

    Me.listbox.AddItem dummy, RigoF

    mi dava errore solo quando

    RigoF>me.listbox.listcount-1

    ossia cercavo di inserire l'item dopo l'ultima riga della listbox

    Ti ringrazio per l'aiuto e appena avrò verificato il corretto funzionamento, lo segnalerò.

    Per quanto riguarda la versione access 2003, farò altre verifiche, magari utilizzando la tua

    form_treeVieW scaricata dal sito comune.

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-04-03T12:24:39+00:00

    Ciao Giorgio e grazie dell'interessamento.

    Dunque il messaggio è:

    "impossibile aggiungere questo elemento.Indice troppo grande"

    ho verificato, seguendo le tue istruzioni, il listcount della lista e:

    RigoF=2

    me.listBox.ListCount=2 (sono presenti solo 2 item: item 0 e item 1)

    Il messaggio di errore non compare quando me.listBox.listcount è maggiore di RigoF.

    In pratica se provo ad aggiungere il rigoF dopo l'ultimo item visualizzato in lista mi da l'errore.

    Questo errore lo da solo sull'access 2003, mentre in access 2007 va tutto liscio come l'olio.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-03-31T08:42:48+00:00

    Buon giorno,

    sto provando a creare una listBox con struttura ad albero, facendo una "libera interpretazione"

    del modello di Riorgio Rancati che ho trovato sul sito comune (http://web.mclink.it/MC5884/index.html).

    sul mio pc, office 2007 tutto va bene, ma quando trasferisco il file su i pc dell'ufficio con office 2003

    all'istruzione me.listbox additem [stringa da inserire],[index] mi da l'errore "Indice non incluso nell'intervallo" o qualcosa di simile.

    Mi spiego meglio:

    [CUT]

    Me.listbox.AddItem dummy, RigoF

    Qui mi da errore, non mi consente di aggiungere l'item, ma se tolgo

    l'index (rigoF), mi aggiunge l'item ma alla fine della lista quindi

    la sede non è più visivamente vicina al record dal quale dipende.

    Grazie in anticipo

    Ciao,

    come prima idea mi viene da pensare che probabilmente il valore di RigoF è superiore al numero degli elementi già memorizzati, in sostanza RigoF non può essere maggiore di Me.Listbox.ListCount, prova a controllare stampando il valore di ListCount nella finestra immediata di VBA con l'istruzione Debug.Print Me.Listbox.ListCount inserita appena prima di Me.listbox.AddItem dummy, RigoF

    bisognerebbe anche conoscere l'esatto messaggio d'errore.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento