Recorrer Listbox
Recorrer Listbox
Recorrer Listbox
22/10/2009
Experto suponiendo que el listbox --> list1 y el textbox --> text1 por nombre: Dim I As Integer For I = 0 To List1.ListCount - 1 If List1.List(I) = Text1.Text Then MsgBox "Textbox esta en la posicion=" & I & " del listbox" Next 22/10/2009
Usuario perfecto..en este caso , si lo encuentra sale el mensaje pero como haria el codigo para decir " si no lo encuentra, hago esto" osea hacer lo contrario espero me haya explicado gracias.. expertoooo 22/10/2009
Experto prueba esto... Dim ExisteValor As Boolean Dim I As Integer ExisteValor = False
For I = 0 To List1.ListCount - 1 If List1.List(I) = Text1.Text Then MsgBox "Textbox esta en la posicion=" & I & " del listbox" ExisteValor = True End If Next If ExisteValor = False Then MsgBox "El valor buscado no existe" saludos, espero haber entendido bien lo que pides..
24/08/2009
Experto No, se debe hacer desde un combobox el listbox no es editable desde el propio listbox. >Un saludo >Julio 24/08/2009
Usuario Julio: No entendi, lo del combobox, ya que no tengo ninguno, pero entiendo que los listbox no son editables, por consiguiente, si selecciono un registro o varios de los que contiene el listbox, puedo eliminarlos, presinando un comandbutton ????????? y cual seria la rutina del mismo ?????? desde ya gracias 24/08/2009
Experto Hola, eso si puedes hacerlo pero quedara el espacio en blanco en tu lista, por ejemplo si cargas el Listbox con el rango A1:A6 y seleccionas un valor de la lista por ejemplo A3 el codigo en el boton sera: Private Sub CommandButton1_Click() Dim valor As String On Error Resume Next valor=Listbox.1.Value Range("A1:A6").Select Selection.Find(what:=valor).Activate If ActiveCell.Value=valor Then ActiveCell.Empty 'Aqu la linea para definir el rango End If End Sub Pero en este caso la celda A3 se quedara en blanco y cuando desplegaras el Listbox veras un hueco salvo que eliminaras la fila (Selection.EntireRow.Delete) en vez el valor de la celda (linea en negrita)y volvieses a definir el rango del Listbox para que una vez eliminada la fila el rango que cargar el Listbox fuese A1:A5 para evitar el espacio al final de la lista. (Listbox1.ListFillRange="A1:A5") Si necesitas alguna aclaracin me lo dices. >Un saludo >Julio 25/08/2009
Usuario Julio: No puedo hacer que funcione, en la linea 'Aqu la linea para definir el rango, coloco Selection.EntireRow.Delete, pero me elimina todo el rango, en lugar de eliminar el valor seleccionado en el listbox. Perdon por la ignorancia. 25/08/2009
Experto Hola, es que no es ah lee bien la contestacion te he dicho: Pero en este caso la celda A3 se quedara en blanco y cuando desplegaras el Listbox veras un hueco salvo que eliminaras la fila (Selection.EntireRow.Delete) en vez el valor de la celda (linea en negrita)
Con esto quera que cambiaras la linea en negrita: ActiveCell.Empty por Selection.EntireRow.Delete Y para cambiar el rango del listbox cuando hayas eliminado la fila tenias que poner en la linea Aqui la linea para definir el rango: Listbox1.ListFillRange="A1:A5" 'cambiando el rango a tu necesidad. A ver si ahora me has entendido. >Un saludo >Julio 25/08/2009
Usuario Julio: Entendi, lo que me explicaste, pero la macro sigue sin funcionar del todo, ya que en el momento de: Range("a1:a6").Select, se selecciona todo el rango, y al momento del:Selection.EntireRow.Delete se elimina todo el rango, en lugar de eliminarse el registro seleccionado. gracias, un abrazo 25/08/2009
Experto Bien te pongo toda la macro porque no estas poniendo las lineas de codigo en su lugar correcto: Esta macro te elimina el valor de la celda, buscando el valor en el rango A1:A6 Private Sub CommandButton1_Click() Dim valor As String On Error Resume Next valor=Listbox1.Value Range("A1:A6").Select Selection.Find(what:=valor).Activate If ActiveCell.Value=valor Then ActiveCell.Empty End If End Sub Si queremos eliminar la fila quedara as: Private Sub CommandButton1_Click() Dim valor As String On Error Resume Next valor=Listbox1.Value Range("A1:A6").Select Selection.Find(what:=valor).Activate If ActiveCell.Value=valor Then Selection.EntireRow.Delete End If End Sub Como ahora al eliminar la fila te quedara un hueco en la lista del Listbox tenemos que modificar el rango con el que cargamos el Listbox y entonces quedara as: Private Sub CommandButton1_Click() Dim valor As String On Error Resume Next valor=Listbox.1.Value
Range("A1:A6").Select Selection.Find(what:=valor).Activate If ActiveCell.Value=valor Then Selection.EntireRow.Delete Listbox1.ListFillRange="A1:A5" End If End Sub Y ya lo ultimo si quieres cargar el Listbox en automatico independiente de los datos que pongas en tu lista, suponemos que vas escribiendo valores en la columna A y que cuando te parezca, aumentas los valores, entonces primero cargamos el Listbox en automatico y despues eliges un valor de l para eliminarlo, para ello debemos de poner 2 botones uno de carga y otro para elegir valor en el Listbox y eliminar la fila: -Boton de carga del Listbox Private Sub CommandButton1_Click() Dim final As String Range("A1").Select ActiveCell.End(xlDown).Select final = ActiveCell.Address ListBox1.ListFillRange = "A1:" & final & "" End Sub -Boton de buscar y eliminar fila Private Sub CommandButton2_Click() Dim valor, final As String valor = ActiveSheet.ListBox1 Range("A1").Select ActiveCell.End(xlDown).Select final = ActiveCell.Address Range("A1", final).Select Selection.Find(what:=valor).Select If ActiveCell.Value = valor Then Selection.EntireRow.Delete End If End Sub Espero que ahora ya no te queden dudas, puntua y finaliza la consulta.Gracias. >Un saludo >Julio
Experto Hola amigo, para poder limpiar el ListBox tienes que poner al principio del cdigo la siguiente instruccin: ListBox1.Clear Con eso te limpia el ListBox y te lo vuelve a llenar con los nuevos datos. Perdona la respuesta tan tarda, estaba un poquito ocupado. [email protected] [email protected]
Experto Hola q tal como estas bueno si deseas guardar un listado de un listbox aqui una pequea solucion for x=1 to listbox.listcount rs.addnew rs(0)=listbox1.list(x) rs(1)=listbox2.list(x) rs.update Next x Espero te sirva de ayuda ...