Coincidir celdas desde un listbox

Otra vez aquí tratando de aclarar mis dudas este mundo de la programación y donde soy un principiante bueno siguiendo con mi proyecto he realizado un código desde el evento clic del listbox y me activa la celda efectivamente pero si tengo una celda con la misma información no me la activa te dejo un ejemplo si en la celda 5 tengo el código 0001 y en la celda 38 tengo este mismo código ya no me activa este ultimo solo me activa la celda inicial osea la celda 5 te dejo el código y me dices donde esta mi error de antemano te agradezco por tu ayuda...

Private Sub ListBox1_Click()

'activar la celdad el registro elegido

On Error Resume Next

Range ("a1").Activate Cuenta = Me.ListBox1.ListCount

On Error Resume Next

For i = 0 To Cuenta - 1 If Me.ListBox1.Selected(i)

Then 'MsgBox Me.ListBox1.List(i)

Valor = Me.ListBox1.List(i)

Sheets("Registros").Range("A1:A75536").Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate End If Next i
End Sub

1 respuesta

Respuesta
2

¿Cuántos registros tienes seleccionados en tu listbox?

Si seleccionaste 1 registro y quieres que se busque ese valor, varias veces hasta que ya no encuentre filas con el mismo valor, tienes que cambiar el ciclo.

Si tienes varios registros seleccionados, tienes que poner dentro del ciclo for, otro ciclo que haga las búsquedas.

Supongo que solamente tienes seleccionado un registro, ya que el evento se activa cuando seleccionas un registro, entonces cambia tu código por este.

Private Sub ListBox1_Click()
'Por.DAM
valor = ListBox1.List(ListBox1.ListIndex)
    Set r = Range("A1:A75536")
    Set s = r.Find(valor)
    If Not s Is Nothing Then
        ncell = s.Address
        s.Activate
        Do: Set s = r.FindNext(s)
            If Not s Is Nothing And s.Address <> ncell Then s.Activate
        Loop While Not s Is Nothing And s.Address <> ncell
    Else
        MsgBox "no existe", vbCritical
    End If
End Sub

Tendrás que ejecutarlo en modo debug para que veas como va activando celda por celda.

hola realiza lo mismo pero a la inversa osea solo me activa el ultimo registro me pregunto sera esta parte del código que me esta molestando sera que tengo que cambiar de funciones leeré atentamente tus aportes tengo un combo para lo de criterio el text para anotar el criterio, el cual este es su código:

Private Sub TextBox1_Change()

Dim uf As Integer
[S2] = ""
[S1] = ComboBox1.Text
[S2] = TextBox1.Text
uf = [A65536].End(xlUp).Row
Range("A1:Q1" & uf).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"S1:S2"), CopyToRange:=Range("AA1:AQ1"), Unique:=True
uf = [aa65536].End(xlUp).Row
ListBox1.ColumnCount = 17
ListBox1.RowSource = "AA2:AQ2" & uf
End Sub

gracias........

1. El primer código te activa una celda y se sale del for, porque solamente tienes un registro seleccionado.

2. ¿Cuál celda quieres activar? ¿La primera o la última?

3. ¿El siguiente código que me enviaste para qué es?

Si fue resuelta tu primera pregunta, podrías finalizarla y crear una nueva.

Saludos. DAM

hola

1 que me active todas las celdas que seleccione independiente si el dato es igual o no ya que si tengo un dato igual no me lo selecciona.

2. ese código es para que vieras si es por allí si tenia los inconvenientes nada mas

gracias....

Haber si entendí bien, ¿quieres qué seleccione todas las celdas que son iguales a lo que elegiste en el listbox?

Prueba con este:

Private Sub ListBox1_Click()
'Por.DAM
valor = ListBox1.List(ListBox1.ListIndex)
    Set r = Range("A1:A75536")
    Set s = r.Find(valor)
    If Not s Is Nothing Then
        ncell = s.Address
        cadena = ncell
        Do: Set s = r.FindNext(s)
            If Not s Is Nothing And s.Address <> ncell Then cadena = cadena & "," & s.Address
        Loop While Not s Is Nothing And s.Address <> ncell
    Else
        MsgBox "no existe", vbCritical
    End If
    Range(cadena).Select
End Sub

disculpándome: por mi novatada no me hecho entender si deseo seleccionar los registros del listbox 1 a 1 si del list elijo el registro 1 me active la celda 1 de la hoja si elijo el dato del list 34 me active la celda 34 aclaro independiente si los datos del list son repetidos ya que antes encontraba un dato repetido no me activaba la celda elegida si no el ultimo dato del repetido

espero me haya hecho entender y agradezco como siempre el profesionalismo en esta labor tan difícil el de entender a las personas que de pronto no explicamos bien felicitaciones...

Con esta línea estás cargando el list

ListBox1.RowSource = "AA2:AQ2" & uf

Debería ser así, tienes el último 2 demás

ListBox1.RowSource = "AA2:AQ" & uf

Para seleccionar la celda:

Private Sub ListBox1_Click()
'Por.DAM
f = ListBox1.ListIndex + 2
Cells(f, "A").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas