No ejecutar macro si una celda está en blanco

Quiero hacer que no ejecute la macro 2 si la celda D3 está en blanco.

Una macro filtra los según el dato que he ingresado en la celda D3:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False, False) = "D3" Then Call Macro1 End If End Sub

La otra macro hace un filtro según el valor que tiene la celda A12, pero la celda A12 tiene una fórmula condicional que muestra un valor dependiendo del dato ingresado en la celda D3. Esta es la macro :

Sub Macro1() With Worksheets("aa_lendinf").Range("A12") Sheets("AA_LENDING").Range("A1:J7000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range( _ "A11:A12"), CopyToRange:=Range("C11:K11"), Unique:=True End With: End Sub

Lo que necesito es que si en la celda D3 no hay un valor ingresado entonces no se ejecute la macro 2. Lo que está pasando es que al dejar la celda D3 en blanco la celda A12 queda en blanco también y en lugar de no hacer el filtro está mostrando todos los datos.

1 respuesta

Respuesta
2

Prueba con lo siguiente

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, False) = "D3" And Target <> "" Then
        Call macro1
    End If
End Sub

Saludos.Dam
Si es lo que necesitas.

Gracias Dam,

Me ha servido para la primera parte y al tratar de combinarla con la Macro 1 macro me manda error.

¿Podrías ayudarme?

Sub Macro1() If Target.Address(False, False) = "A12" And Target <> "" Then With Worksheets("aa_lendinf").Range("A12") Sheets("AA_LENDING").Range("A1:J7000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range( _ "A11:A12"), CopyToRange:=Range("C11:K11"), Unique:=True End With: End Sub

El error es:

"Error en compilación:

Bloqu

Puedes copiar la macro primero a word y luego copiarla de word y pegarla aquí, es que así como la pones no se entiende, están todas las filas pegadas.

Saludos. DAM

Aquí está

Sub Macro1()
If Target.Address(False, False) = "A12" And Target <> "" Then
With Worksheets("aa_lendinf").Range("A12")
Sheets("AA_LENDING").Range("A1:J7000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range( _
"A11:A12"), CopyToRange:=Range("C11:K11"), Unique:=True
End With: End Sub
End If

Al ejecutarla me sale error

"Error de compilación:

Bloque If sin End If"

Saludos,

Debería ser así, el problema está en esta línea End With: End Sub

Sub Macro1()
If Target.Address(False, False) = "A12" And Target <> "" Then
    With Worksheets("aa_lendinf").Range("A12")
        Sheets("AA_LENDING").Range("A1:J7000").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range( _
        "A11:A12"), CopyToRange:=Range("C11:K11"), Unique:=True
    End With
End If
End Sub
 

Por otra parte, también tienes este detalle en esta línea

Target.Address(False, False) = "A12"

El elemento Target es un objeto que se activa cuando estás en el evento de worksheet, dicho de otra forma, no te va a funcionar si lo pones en un módulo, a lo mejor te sirve así:

Sub Macro1()
If Range("A12") <> "" Then
    With Worksheets("aa_lendinf").Range("A12")
        Sheets("AA_LENDING").Range("A1:J7000").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range( _
        "A11:A12"), CopyToRange:=Range("C11:K11"), Unique:=True
    End With
End If
End Sub

Prueba y me comentas.

Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas