¿Cómo puedo seleccionar un dato en especifico de una hoja con la macro?

tengo el siguiente código:


la primera parte es del Textbox.

Private Sub TextBox13_Change()
Dim hj As Worksheet
Dim C As Range, FirstCell As String
Dim busque
Application.ScreenUpdating = False
busque = TextBox13.Value
If TextBox13.Value = Empty Then
ListBox1.Clear
Label17.Caption = ""
Exit Sub
Else
If Len(TextBox13) < 1 Then
Exit Sub
Else
ListBox1.Clear
If Len(TextBox13) > 0 Then
Set C = Sheets("Folios").Range("B2:B" & Sheets("Folios").Range("B" & Rows.Count).End(xlUp).Row).Find(What:=busque, LookIn:=xlValues, LookAt:=xlPart)
If C Is Nothing Then GoTo ProximaHoja
FirstCell = C.Address
Do
With ListBox1
.ColumnCount = 10
.ColumnWidths = "15;72;105;125;72;65;56;55;51"
.AddItem ListBox1.ListCount + 1
.Column(1, ListBox1.ListCount - 1) = C.Value
.Column(2, ListBox1.ListCount - 1) = C.Offset(0, 1).Value
.Column(3, ListBox1.ListCount - 1) = C.Offset(0, 2).Value
.Column(4, ListBox1.ListCount - 1) = C.Offset(0, 3).Value
.Column(5, ListBox1.ListCount - 1) = C.Offset(0, 4).Value
.Column(6, ListBox1.ListCount - 1) = C.Offset(0, 5).Value
.Column(7, ListBox1.ListCount - 1) = C.Offset(0, 6).Value
.Column(8, ListBox1.ListCount - 1) = C.Offset(0, 7).Value
.Column(9, ListBox1.ListCount - 1) = C.Offset(0, 11).Value
'.Height = ListBox1.ListCount * 20
End With
Set C = Sheets("Folios").Range("B2:B" & Sheets("Folios").Range("B" & Rows.Count).End(xlUp).Row).FindNext(C)
Loop Until FirstCell = C.Address
ProximaHoja:
Set hj = Nothing
Set C = Nothing
End If
Label17.Caption = ListBox1.ListCount & " Datos Localizados"
Label17.Visible = True
Application.ScreenUpdating = True
'Call Final
End If
End If
End Sub

la segunda parte es del Listbox.

Private Sub ListBox1_Click()
Fila = Me.ListBox1.ListIndex + 2
For i = 1 To 4
Cells(Fila, 1).Activate
Next i
End Sub
lo que hace el código es buscar un numero en la base de datos conforme vas tecleando el numero a buscar, en el listbox va apareciendo el numero encontrado. Lo que no puedo hacer es que ese numero encontrado en el listbox lo seleccione y lo pueda modificar.

espero y puedan ayudarme para poder terminar este pequeño proyecto.

1 respuesta

Respuesta
1

Vamos por partes, primero, si le das click a un registro del listbox, vamos a localizar ese registro en la hoja, como los registros en el listbox están filtrados, entonces, el número 0 del listbox en la hoja puede ser la fila 23.

Si los números son únicos, entonces podrías poner un find, de esta forma

Private Sub ListBox1_Click()
'Por.DAM
numero = ListBox1.List(ListBox1.ListIndex, 1)
With Sheets("Folios")
    Set b = .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row). _
        Find(numero, lookat:=xlWhole) 'xlwhole: para que la coincidencia sea exacta
End With
If Not b Is Nothing Then b.Select
End Sub

El problema está en que si tienes más de una fila con el mismo número, el find se va a poner en el primero que encuentra. Para resolverlo tendríamos que cambia la forma de buscar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas