Visual Basic - Ayuda con listbox

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda con listbox

Publicado por Juanito (30 intervenciones) el 31/05/2008 17:20:16
Hola:

Tengo una hoja de excel con un form. En el form tengo un boton y un listbox con opptionbutton. Tengo programado cada optionbutton de tal manera que al pulsarles, me carga una determinada columna con datos de la hoja excel. Para lo que sirve el form es para que al selecionar un elemento de la lista, lo copia en la celda activa y lo quita de la lista, ya que me interesa (por ser elemento ya usado).

El caso es que hasta aqui todo funciona bien, pero el problema es que por elemplo, cambio de optionbutton, pero cuando vuelvo al anterior porque me interesa (donde ya habian desaparecido los elementos utiliados), pues me vuelve a salir el listado completo que carga de la columna de excel.

La cuestion es que necesito que alguien me indique como modifico el codigo para que me guarde en memoria los elementos que ya han desaparecido del listbox y no vuelvan a aparecer al cambiar de optionbutton y regresar al anterior.

---------------------------------------------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
'Al pulsar al boton, copia el elemento en cell y lo quita del listbox.
Activecell = listbox1.value
ListBox1.RemoveItem ListBox1.ListIndex
End Sub

Private Sub OptionButton1_Click()
' Carga los elementos de la Hoja2 - Columna A.
Dim totaldatos As Long, datos
Dim vuelta As Long, c As Byte

totaldatos = Application.WorksheetFunction.CountA(Worksheets("hoja2").Range("a:b"))

datos = Hoja2.Range("A1:A" & totaldatos).Value

ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50;50;20;50"
ListBox1.List() = datos
End Sub

Private Sub OptionButton2_Click()
' Carga los elementos de la Hoja2 - Columna B.
Dim totaldatos As Long, datos
Dim vuelta As Long, c As Byte

totaldatos = Application.WorksheetFunction.CountA(Worksheets("hoja2").Range("a:b"))

datos = Hoja2.Range("B1:B" & totaldatos).Value

ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50;50"
ListBox1.List() = datos
End Sub
---------------------------------------------------------------------------------------------------------------------------

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con listbox

Publicado por J@vier (10 intervenciones) el 01/06/2008 12:30:17
Buenas, veo que cuando vas a eliminar el iten si no esta seleccionado o si la lista esta vacia te tirara un error.

para esto podrias hacer algo asi :

If ListBox1.ListCount > 0 Then ' comprueba que contiene algun iten
If ListBox1.ListIndex <> -1 Then ' comprueba que este seleccionado un iten
ListBox1.RemoveItem ListBox1.ListIndex
Else
MsgBox "No Hay seleccion"
End If
End If

para tu pregunta, heces :

totaldatos = Application.WorksheetFunction.CountA(Worksheets("hoja2").Range("a:b"))

datos = Hoja2.Range("A1:A" & totaldatos).Value

esto hace que siempre llene la lista con las primeras 4 celdas en vertical ya que cuentas "a1,a2,b1,b2" , y lo hace esten llenas o vacias las celdas.

deberias cambiar este sistema si quieres conseguir tu proposito.

suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar