Visual Basic - ACTIVAR CELDA CON LISTBOX

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 3 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ACTIVAR CELDA CON LISTBOX

Publicado por Alberto (2 intervenciones) el 02/05/2018 01:10:27
Hola soy nuevo en esta aplicación de excel así que de antemano me disculpo si no puedo usar un lenguaje muy técnico para expresar mi problema. Empiezo: Tengo una base de datos en una tabla, dichos datos están ordenados por fecha, y he creado un userform que usa un listbox para poder acceder a la información que tengo en dicha base de datos. Al momento de realizar la búsqueda me arroja los datos en el listbox y cuando clikeo la opción dentro del listbox se selecciona la fila entera donde se encuentra la información y de esta forma puedo modificar los datos en especifico. El problema es que cuando las fechas están repetidas todo esto falla. Por ejemplo: si tengo 10 registros con fechados "01/05/2018" el listbox los encuentra todos, y los muestra todos, pero al momento de seleccionar uno de los registros no lo hace, solo selecciona el segundo con esa fecha, no pudiendo asi seleccionar el primero ni el resto. Note que esto solo ocurre cuando las fechas son exactamente las mimas. Dejare adjunto algunas imágenes de como se ve el registro (en el cual selecciono en azul pero en la tabla no coincide la selección) y de como es el código, También adjunto el archivo para que lo revisen mejor si gustan, y puedan dar con el problema. Espero puedan ayudarme, ya que esto me tiene semanas partiéndome la cabeza. Cabe destacar que no soy programador, he hecho "corte y pega" de los cogidos para crear un archivo excel que me funcione para mis necesidades. Soy Medico, pero me gusta excel. =)
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
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ACTIVAR CELDA CON LISTBOX

Publicado por gilman (359 intervenciones) el 02/05/2018 09:20:54
El problema es que el método find busca la primera coincidencia a partir de la celda actual, como al inicio del código te has posicionado sobre la primera celda con fecha te encuentra siempre la siguiente, para buscar añade al listbox la fila en la que se encuentra la coincidencia:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub CommandButton1_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
    If LCase(Cells(i, j).Offset(0, 0).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
        Me.ListBox1.AddItem Cells(i, j)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
        'anotar el número de fila
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = i
 
    Else
    End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub
y luego al hacer click sobre un elemento de la lista te posicionas sobre dicha fila:
1
2
3
4
5
6
7
8
9
10
11
12
13
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
'Range("a3").Activate
'Cuenta = Me.ListBox1.ListCount
'Set Rango = Range("A1").CurrentRegion
For i = 0 To ListBox1.ListCount - 1
    If Me.ListBox1.Selected(i) Then
        Rows(ListBox1.List(i, 4)).Activate
'        Valor = Me.ListBox1.List(i)
'        Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
    End If
Next i
End Sub '
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 3 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ACTIVAR CELDA CON LISTBOX

Publicado por Alberto (2 intervenciones) el 12/07/2018 07:18:26
Muchisimas gracias, has dado justo con el problema. Sin embargo me seguía dando un pequeño error (no me seleccionaba el segundo registro) pero pude solucionarlo simplemente omitiendo este código (Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate)
La selección no la hace de forma muy estética al borrarlo, pero al menos me soluciona el problema. De verdad muchisimas gracias!
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