Demos por hecho que tienes cargada la lista con 40 elementos...
Lo siguiente, es acomodar los controles label o textbox, a un array de controles.
Esto se hace creando un control (depositando con el ratón una instancia en la ventana de la interfaz), y luego seleccionarlo, copiarlo y pegarlo,... Preguntará si quieres crear un array de controles, le dices que sí y pegas tantas copias como necesites... Supongamos pues que son 6, y sean labels o textbox, para el ejemplo no importa.
Label1(0) hasta Label1(5).
Fíjate que en vb6, será un array de controles si tienen exactamente el mismo nombre (y están en la misma ventana) ... El índice habitualmente irá desde 0 hasta, 1 menos del total, esto es, si hay 6, hasta el label1(5). En realidad es una diccionario, no es un array, lo que se descubre fácilmente en 2 detalles... 1° es posible asignar un índice como 582 al label(5) durante diseño, y 2° porque dinámicamente se cargan con la instrucción Load y descargan con Unload, y no con redim y erase respectivamente...
El botón, es mejor que llame a una función que será la que hará el trabajo y a la que podremos crear y pasar los parámetros que nos interesen. Como método del botón, el evento click, ya tiene su propios parámetros, lo que da menos juego y lo deja más sucio...
Sabes lo que quieres hacer, te falta aprender a crear los conceptos para transformar luego en código... Analicemos :
- tenemos un listbox, ergo una lista... Aquí aparece una variable (que usaremos como tal)
- tenemos que la lista tiene 3 detalles de interés al caso: La cantidad que contiene, el índice para referirnos a un elemento y su valor... De aquí salen 2 variables (el valor se constata del objeto (ya lo auto contirnr la lista): índice y cantidad en la lista.
- tenemos finalmente una cantidad a copiar con cada llamada, que es exactamente la cantidad de labels... De aquí sale la última variable necesaria.
Ahora, pasemos a la lógica del programa:
1 Hay una lista con 'x' elementos.
2 Hay 'y' labels.
3 Hay un botón, que cuando se pulsa transfiere los siguientes 'y' elementos de la lista a los labels.
La lógica declara que necesitamos 'recordar', por donde vamos, para poder continuar en otra ocasión, justo por el punto en que quedamos.
Hay un detalle necesario, pero que se queda en la ambigüedad, por que no le has dado solución... Y es, qué pasa cuando se llega al final de la lista... Lo dejaré sin terminar (pero dejo esta nota de recordatorio) , queda a tu esfuerzo concretar el caso y aplicar la solución.
Din Index as integer ' recuerda dónde nos quedamos. De entrada vale 0.
Private sub command1_click()
Call TransferirSiguienteGrupo(index, 6) ' 6 es la cantidad a transferir...
End sub
Private sub TransferirSiguienteGrupo(byref Indice as integer, byval Items as integer)
Din k as integer, j as integer
For k=indice to indice +Items-1
Label1(j).caption = listbox1.list(k)
J =(j+1)
Next
Indice=(indice+items)
End sub
...y eso es casi todo... Cuando lo pruebes funcionará, hasta llegar al final de la lista que dará error, pues falta por definir, qué sucede en tal situación y que dejo a tu esfuerzo el resolverlo, porque si no, te estaría haciendo la tarea completa...