Buscar una celda a través de un dato de un combobox

Tengo un combobox incrustado en la hoja "cotizaciones", el cual me despliega el nombre de todos los clientes que tengo ingresados en la hoja "clientes".

Si selecciono un nombre del combobox, este se pega en la ultima celda vacía de la columna DE, la idea es que también se pegue otro lado en la columna E que aparece en la hoja "clientes". Espero que me puedan ayudar, este es mi código el cual arroja un error: "Next sin for", por el segundo for. Saludos.

Dim ultimafila As Long
Dim codigo As Range
Dim cliente As Range

_____________________________________________________________________
Private Sub cotizacion_Click()
ultimafila = Range("C65536").End(xlUp).Row
ultimafila = ultimafila + 1
Cells(ultimafila, 3).Select
End Sub

____________________________________________________________________
Private Sub ComboBox1_Click()
Dim pos As Integer
Set h = Sheets("CLIENTES")
For i = 7 To h.Range("B" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h.Cells(i, "B")
Next
Cells(ultimafila, 4).Value = ComboBox1.Value
cliente = Cells(ultimafila, 4).Value
Set h = Sheets("CLIENTES")
For i = 7 To h.Range("B" & Rows.Count).End(xlUp).Row
If cliente = Cells(i, "B").Value Then
codigo = Cells(i, "D").Value
End
Next
Cells(ultimafila, 5).Value = codigo
End Sub

2 Respuestas

Respuesta
1

If cliente = Cells(i, "B").Value Then
codigo = Cells(i, "D").Value
End
Next
Cells(ultimafila, 5).Value = codigo
End Sub

En la última macro, en esta parte del código que he citado, realmente debe ir el "End", si lo colocas no sirve de nada el Next que pones a continuación. Es probable que esa sea la causa de tu problema. Saludos!

PD. Analizando más a fondo, no es un End if? Si ya viendo bien es un End if.

Corrige ese End por End if.

El next es para cerrar el segundo ciclo for..

Sí, comprendo esa parte. Lo que te digo que tienes un End, que lo que hace es terminar la secuencia ahí y por tanto tu Next ya no cumple ninguna función. Ese End en realidad debe ser tu End if, ya que debe cerrar tu condicional. Cambia de end a End if.

Respuesta
1

Debes reemplazar la palabra End por estas 2 marcadas:

For i = 7 To h.Range("B" & Rows.Count).End(xlUp).Row
If cliente = Cells(i, "B").Value Then
       codigo = Cells(i, "D").Value
       Exit For

End If
Next

Esto hará que finalice el bucle cuando encuentre coincidencia, sino seguirá con el Next.

Te recuerdo que mi respuesta, que es correcta, me sigue apareciendo como 'pendiente'. No olvides valorarla.

Sdos!

No es lo mismo una respuesta buena a una parcialmente buena ;)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas