No ejecutar macro al seleccionar una celda vacía

Espero te encuentres genial.

Tengo la siguiente macro que inserta una imagen cuando selecciono cualquier celda dentro del rango "A1:A30":

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
    If Not Intersect(Target, Range("A1:A30")) Is Nothing Then
        PosiciónImagen = Target.Offset(0, 2).Address(RowAbsolute, ColumnAbsolute)
        RutaArchivo = ThisWorkbook.Path & "\" & Target & ".jpg"
        Me.Shapes(PosiciónImagen).Delete
        Set Foto = Me.Pictures.Insert(RutaArchivo)
            With Range(PosiciónImagen, Range(PosiciónImagen).Offset(8, 0).Address)
                Arriba = .Top
                Izquierda = .Left
                Ancho = .Offset(0, .Columns.Count).Left - .Left
                Alto = .Offset(.Rows.Count, 0).Top - .Top
            End With
            With Foto
                .Name = PosiciónImagen
                .Top = Arriba
                .Left = Izquierda
                .Width = Ancho
                .Height = Alto
            End With
        Set Foto = Nothing
    End If
End Sub

Ahora bien, lo que no he podido lograr es que cuando yo seleccione una celda vacía sea que esté contenida en el target o no, pretendo que no se me ejecute la macro y a la vez se me borre la imagen que me inserta la macro. Espero me halla dado a entender.

¿Cómo le puedo hacer para poder lograrlo?

Estaré al pendiente de tu pronta respuesta, saludos.

Gracias.

P. D. Prozac, te adjunto un link descarga por si deseas echarle un vistazo a lo que estoy haciendo. http://www.mediafire.com/download.php?fgxtf6et1m7vnpa

1 respuesta

Respuesta
1

No tengo claro lo que quieres cuando hablas de borrar la imagen. Para que la macro no se ejecute si la celda esta vacía basta con añadir la condición en el if. Sería algo así:

If (Not Intersect(Target, Range("A1:A30")) Is Nothing) AND _
   (Target.value > "") Then

Si lo de borrar imagen se refiere a la instrucción Me. Shapes(PosiciónImagen).Delete entonces hay que separar las condiciones. Seria algo como

If (Not Intersect(Target, Range("A1:A30")) Is Nothing) Then
    If (target.value ="") then 'celda vacia
        Me.Shapes(PosiciónImagen).Delete
    else 'tiene conetenido
       'aqui lo que hay que hacer cuando la celda tiene contenido
    end if
end if
 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas