Definir una variable con valor de celda Excel

Tengo hoja llamada "clientes", en ella en la columna I tengo la categoría a la que pertenece cada cliente, y quiero que una macro me ejecute una tarea para los clientes que en dicha columna I tienen un valor especifico, por ello mediante un bucle deseo hacer la tarea, pero resulta que la instrucción no me toma el valor de la celda (el cual esta en la hoja FACTURA B6), sino que realiza la operación para todos los items que están en la hoja clientes; la macro es la siguiente:

Private Sub CommandButton4_Click()
Dim Celda As Range
Dim Rango As Range

ultimafilabloque = Sheets("CLIENTES").Range("I1048576").End(xlUp).Row

Set Rango = Sheets("CLIENTES").Range("I3:I" & ultimafilabloque)

Set Celda = Sheets("FACTURA").Range("B6").Value

For Each Celda In Rango

'....INSTRUCCIONES
Next

End Sub

Cómo podría modificar la macro para que si por ejemplo en la hoja FACTURA B6 dice "lista1", ¿la macro solamente se ejecute para las filas de la hoja CLIENTES columna I en las cuales igual aparede el nombre "lista1"?

2 Respuestas

Respuesta
1

Hay una discrepancia aquí:

Set Celda = Sheets("FACTURA").Range("B6").Value

For Each Celda In Rango

Así es como yo lo haría:

Private Sub CommandButton4_Click()
Dim Categoria As String
Dim ultimafilabloque As Long
Dim Celda As Range
Dim Rango As Range
ultimafilabloque = Sheets("CLIENTES").Range("I1048576").End(xlUp).Row
Set Rango = Sheets("CLIENTES").Range("I3:I" & ultimafilabloque)
Categoria = Sheets("FACTURA").Range("B6").Value
For Each Celda In Rango.Cells
If Celda.Value = Categoria Then
'....INSTRUCCIONES'
End If
Next
End Sub

Best.

Buenos días, gracias por la información, funciona perfecto, perdón la molestia, quiero pedir un último favor, no sé si en el bucle se pueda pedir que cada que en la columna I de la hoja CLIENTES encuentre un dato que coincida con la celda B6 de la hoja FACTURA, se traiga a la hoja FACTURA B3 el dato que está en la hoja CLIENTES en la columna A de la fila, y en la hoja FACTURA B4 se traiga el dato que está en la columna C de la hoja CLIENTES de la fila, es eso posible incluirlo en el bucle o habría que hacerlo con formula?.

Gracias nuevamente por la ayuda

Si es posible hacerlo, cambié un poco el código para que se pueda trabajar mejor con esas dos hojas, y quedaría así:

Private Sub CommandButton4_Click()
Dim Categoria As String
Dim Clientes As Worksheet: Set Clientes = Sheets("CLIENTES")
Dim Factura As Worksheet: Set Factura = Sheets("FACTURA")
Dim ultimafilabloque As Long
Dim Celda As Range
Dim Rango As Range
ultimafilabloque = Clientes.Range("I1048576").End(xlUp).Row
Set Rango = Clientes.Range("I3:I" & ultimafilabloque)
Categoria = Factura.Range("B6").Value
For Each Celda In Rango.Cells
    If Celda.Value = Categoria Then
        Factura.Range("B3").Value = Clientes.Range("A" & Celda.Row).Value
        Factura.Range("B4").Value = Clientes.Range("C" & Celda.Row).Value
    End If
Next Celda
End Sub

Andy

Ahora que lo pienso, el valor se va a sobre escribir siempre. ¿O el dato que buscas es único? Si es único, entonces la aproximación a tu necesidad debería ser otra y no un bucle.

Muchas gracias por su ayuda, realmente funciona y es lo que necesito; respecto al dato que se traerá siempre va a cambiar dado que corresponde al número de identificación y nombre del cliente, de manera que la solución que me plantea es perfecta.

Nuevamente muchas gracias y que Dios lo bendiga.

Respuesta
1

Como la consulta ya acaba de recibir respuesta, solo me resta invitarte a mirar el video 19 de mi canal donde explico el paso a paso para 'armar' un tipo de bucle según la tarea a realizar.

Y todo lo que necesitas conocer sobre BUCLES lo encontrarás en nuevo manual de Bucles y otras estructuras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas