¿Como insertar una imagen al pulsar un checkbox?

Hola,
 me ha surgido una duda que os querría plantear:
Estoy creando una hoja de calculo y quiero que al pulsar un CheckBox, una imagen me aparezca en una hoja determinada y en un rango determinado. Lo que he conseguido es direccionarla a un rango concreto pero de la propia hoja. El codigo que he utilizado para direccionarla a la misma hoja es el siguiente:
Private Sub ckCasa10_Click() 
 Dim De_donde As String, Foto As Object, _
      Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
  Application.ScreenUpdating = False
  On Error Resume Next
  Me.Shapes("imgcasa").Delete 
  De_donde = "c:\esquemas\casa.jpg"
  If ckCasa10.Value = True Then 
    Set Foto = Me.Pictures.Insert(De_donde)
    With Activesheet.Range("c60:q65") 
      Arriba = .Top
      Izquierda = .Left
      Ancho = .Offset(0, .Columns.Count).Left - .Left
      Alto = .Offset(.Rows.Count, 0).Top - .Top
    End With
    With Foto
      .Name = "imgcasa"
      .Top = Arriba
      .Left = Izquierda
      .Width = Ancho
      .Height = Alto
    End With
    Set Foto = Nothing
  End If
End Sub
El Problema surge cuando quiero mandarla a el mismo rango pero de otra hoja. El codigo que utilizo es:
Private Sub ckCasa10_Click() 
 Dim De_donde As String, Foto As Object, _
      Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
  Application.ScreenUpdating = False
  On Error Resume Next
  Me.Shapes("imgcasa").Delete 
  De_donde = "c:\esquemas\casa.jpg"
  If ckCasa10.Value = True Then 
    Set Foto = Me.Pictures.Insert(De_donde)
    With WorkSheets("Hoja2").Range("c60:q65") 
      Arriba = .Top
      Izquierda = .Left
      Ancho = .Offset(0, .Columns.Count).Left - .Left
      Alto = .Offset(.Rows.Count, 0).Top - .Top
    End With
    With Foto
      .Name = "imgcasa"
      .Top = Arriba
      .Left = Izquierda
      .Width = Ancho
      .Height = Alto
    End With
    Set Foto = Nothing
  End If
End Sub
Espero que haya sido claro,
Muchas Gracias!!
Kilian

1 Respuesta

Respuesta
1
'Corregir la línea anterior también
Private Sub ckCasa10_Click() 
 Dim De_donde As String, Foto As Object, _
      Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
  Application.ScreenUpdating = False
  On Error Resume Next
  Me.Shapes("imgcasa").Delete 
  De_donde = "c:\esquemas\casa.jpg"
  If ckCasa10.Value = True Then 
    Set Foto = WorkSheets("Hoja2").Pictures.Insert(De_donde)
    With WorkSheets("Hoja2").Range("c60:q65") 
      Arriba = .Top
      Izquierda = .Left
      Ancho = .Offset(0, .Columns.Count).Left - .Left
      Alto = .Offset(.Rows.Count, 0).Top - .Top
    End With
    With Foto
      .Name = "imgcasa"
      .Top = Arriba
      .Left = Izquierda
      .Width = Ancho
      .Height = Alto
    End With
    Set Foto = Nothing
  End If
End Sub
Hola,
Esto es exactamente lo que estaba buscando...El problema es que ahora al desactivar el checkbox, la imagen sigue estando...¿Habria alguna manera de eliminar la imagen al desactivar el checkbox, como sucedía antes?
Muchas gracias
'Usa esta de prueba:
Private Sub ckCasa10_Click()
 Dim De_donde As String, Foto As Object, _
      Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
  Application.ScreenUpdating = False
  On Error Resume Next
  Worksheets("Hoja2").Shapes("imgcasa").Delete
  If Not ckCasa10 Then GoTo Final
  De_donde = "c:\esquemas\casa.jpg" '"c:\user.jpg"
  If ckCasa10 Then
  MsgBox "Activo"
    Set Foto = Worksheets("Hoja2").Pictures.Insert(De_donde)
    With Worksheets("Hoja2").Range("c10:q15")
      Arriba = .Top
      Izquierda = .Left
      Ancho = .Offset(0, .Columns.Count).Left - .Left
      Alto = .Offset(.Rows.Count, 0).Top - .Top
    End With
    With Foto
      .Name = "imgcasa"
      .Top = Arriba
      .Left = Izquierda
      .Width = Ancho
      .Height = Alto
    End With
    Set Foto = Nothing
  End If
Exit Sub
Final:
MsgBox "No activo"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas