No ejecutar macro al seleccionar una celda vacía

¡Hola Duainsulch!

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. Duainsulch, 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

Prueba haber si es esto lo que quieres, si te da problemas el target.text puedes usar target.value

On Error Resume Next
If Not Intersect(Target, Range("A1:A30")) Is Nothing Then

IF NOT TARGET.TEXT = "" 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 If

¡Duainsulch!

Gracias por tu pronta respuesta.

Ahora bien, coloqué la linea que dijiste, pero no, no pasó nada. Es decir, no borra la imagen cuando selecciono cualquier celda vacía, sea que esté contenida en el rango del target o no.

¿Existirá otra forma de lograrlo?

P. D. No se si me estoy dando a entender, por eso pongo el siguiente link que contiene el ejemplo de lo que estoy haciendo: http://www.mediafire.com/download.php?fgxtf6et1m7vnpa

La linea de código era para evitar que se ejecutara la macro cuando la celda estuviera vacía, aun cuando esta estuviera dentro de tu rango. ¿Las fotos van a ocupar siempre la misma posición?, ¿Es decir vas a tener solo una foto por cada 10 filas?

Ya he descargado y visto la hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas