Para DAM me podrías revisar esta macro que podría estar mal

La macro que quiero ejecutar es para que me coloree la fila en donde se cumpla la condición dada de la columna F que son valores.

La macro es:

Private Sub ColorearFilas(ByVal Target As Range)
fil = Target.Row
If Range("F" & fil).Value = "91479620" Then Range("F" & fil).Interior.ColorIndex = 17
If Range("F" & fil).Value = "123456456" Then Range("F" & fil).Interior.ColorIndex = 20
If Range("F" & fil).Value = "135678" Then Range("F" & fil).Interior.ColorIndex = 22
If Range("F" & fil).Value = "4356546" Then Range("F" & fil).Interior.ColorIndex = 16
If Range("F" & fil).Value = "87685365" Then Range("F" & fil).Interior.ColorIndex = 19
End Sub

Pero no me funciona y por el contrario me sale un mensaje que dice "El argumento no es opcional"

Espero respuesta

1 respuesta

Respuesta
1

Tu macro está esperando como parámetro un objeto del tipo range, puede ser una celda. Si no pones el parámetro te envía el error "El argumento no es opcional".

Entonces la macro que llame a la macro ColorearFilas, deberá enviarle una celda, por ejemplo:

Sub color()
    ColorearFilas Range("B5")
End Sub
'
Private Sub ColorearFilas(ByVal Target As Range)
    fil = Target.Row
    If Range("F" & fil).Value = "91479620" Then Range("F" & fil).Interior.ColorIndex = 17
    If Range("F" & fil).Value = "123456456" Then Range("F" & fil).Interior.ColorIndex = 20
    If Range("F" & fil).Value = "135678" Then Range("F" & fil).Interior.ColorIndex = 22
    If Range("F" & fil).Value = "4356546" Then Range("F" & fil).Interior.ColorIndex = 16
    If Range("F" & fil).Value = "87685365" Then Range("F" & fil).Interior.ColorIndex = 19
End Sub

La macro color llama a la macro ColorearFilas y le pasa como parámetro la celda B5, entonces lo que hará la macro ColorearFilas, será tomar la fila de la celda B5, en este caso tomará la fila 5 y entonces validará la fila 5 columna "F".

También puedes enviarle la celda activa:

Sub color()
    ColorearFilas ActiveCell
End Sub
'
Private Sub ColorearFilas(ByVal Target As Range)
    fil = Target.Row
    If Range("F" & fil).Value = "91479620" Then Range("F" & fil).Interior.ColorIndex = 17
    If Range("F" & fil).Value = "123456456" Then Range("F" & fil).Interior.ColorIndex = 20
    If Range("F" & fil).Value = "135678" Then Range("F" & fil).Interior.ColorIndex = 22
    If Range("F" & fil).Value = "4356546" Then Range("F" & fil).Interior.ColorIndex = 16
    If Range("F" & fil).Value = "87685365" Then Range("F" & fil).Interior.ColorIndex = 19
End Sub

La verdad no es lo que necesito por que lo que yo necesito es que me evalúe todas las filas de una tabla, como podria hacer eso? Osea no quiero que me evalúe una celda solamente sino toda una tabla

Hola Dante

Problema la macro que me mandaste, efectivamente solamente funciona si le especifico la celda que debe evaluar (En su ejemplo la B5 en el mio le puse la B780)

Pero cuando la ejecuté me di cuenta que solo me rellena la celda más no la fila.

Adicionalmente pensé que la solución para decirle que evaluara todas las filas era ponerle B2:B10000 pero no fue así.

¿Me ayudas por favor?

Te anexo la macro

Sub colorearfila()
'Por.Dante Amor
    fin = Range("f" & Rows.Count).End(xlUp).Row 'última fila con datos de la columna F
    For i = 2 To fin
        Select Case Range("F" & i)
            Case "91479620":  Range("F" & i).Interior.ColorIndex = 17
            Case "123456456": Range("F" & i).Interior.ColorIndex = 20
            Case "135678":    Range("F" & i).Interior.ColorIndex = 22
            Case "4356546":   Range("F" & i).Interior.ColorIndex = 16
            Case "87685365":  Range("F" & i).Interior.ColorIndex = 19
        End Select
    Next
End Sub

La macro empieza en la fila 2 y termina en la última fila con datos de la columna F

Si quieres un valor fijo cambia

fin = Range("f" & Rows.Count).End(xlUp).Row

Por 

fin = 10000

Igual amigo, solo me esta coloreando la celda en donde ubica el dato pero no me colorea toda la fila, me ayudas?

No te había entendido, entonces necesitabas 3 cosas:

1. Corregir el error de tu macro

2. Crear una macro que buscara en varias filas

3. Colorear toda la fila.

Te anexo la macro:

Sub colorearfila()
'Por.Dante Amor
    fin = Range("f" & Rows.Count).End(xlUp).Row 'última fila con datos de la columna F
    For i = 2 To fin
        Select Case Range("F" & i)
            Case "91479620":  Rows(i).Interior.ColorIndex = 17
            Case "123456456": Rows(i).Interior.ColorIndex = 20
            Case "135678":    Rows(i).Interior.ColorIndex = 22
            Case "4356546":   Rows(i).Interior.ColorIndex = 16
            Case "87685365":  Rows(i).Interior.ColorIndex = 19
        End Select
    Next
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Super esta vez si me funciono como quería pero solo como por ultima duda si es posible que me la puedas resolver que pena molestar tanto.

¿Es posible que me coloree la fila pero solo hasta la columna R?

Que pena molestar tanto

Claro, con gusto te ayudo, pero te recuerdo que debes realizar una pregunta por cada petición, como te comenté anteriormente llevas 3 peticiones y con esta 4 peticiones.

Te envío la corrección pero que no se te olvide crear una pregunta por cada petición.

Sub colorearfila()
'Por.Dante Amor
    fin = Range("f" & Rows.Count).End(xlUp).Row 'última fila con datos de la columna F
    For i = 2 To fin
        Select Case Range("F" & i)
            Case "91479620":  Range("A" & i & ":R" & i).Interior.ColorIndex = 17
            Case "123456456": Range("A" & i & ":R" & i).Interior.ColorIndex = 20
            Case "135678":    Range("A" & i & ":R" & i).Interior.ColorIndex = 22
            Case "4356546":   Range("A" & i & ":R" & i).Interior.ColorIndex = 16
            Case "87685365":  Range("A" & i & ":R" & i).Interior.ColorIndex = 19
        End Select
    Next
End Sub

Recuerda valorar la respuesta.

¡Gracias! 

Gracias DAM por tu ayuda pero como me indicas, como tengo otra duda con respecto a este mismo ejemplo te la voy a poner en otra pregunta entonces

Y nuevamente Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas