Visual Basic para Aplicaciones - Dos códigos en Excel

Life is soft - evento anual de software empresarial
 
Vista:

Dos códigos en Excel

Publicado por Txito (2 intervenciones) el 25/10/2008 03:09:04
Hola

Dispongo de un código que me permite incorporar una foto en función del nombre que ocupa una determinada celda en excel:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Foto As Object, Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
Dim ruta As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Target = [r25] Then Exit Sub
Me.Shapes("Foto").Delete
ruta = ThisWorkbook.Path & "" & [r25] & ".jpg"
Set Foto = Me.Pictures.Insert(ruta)
With Range("q25:q30")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
Application.ScreenUpdating = True

End Sub

Del mismo modo, variando las celdas necesarias obtengo otro código para cambiar las celdas tanto de la ruta del fichero como de la presentación del fichero:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Foto As Object, Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
Dim ruta As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Target = [u25] Then Exit Sub
Me.Shapes("Foto").Delete
ruta = ThisWorkbook.Path & "" & [u25] & ".jpg"
Set Foto = Me.Pictures.Insert(ruta)
With Range("t1:d8")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
Application.ScreenUpdating = True
End Sub

La cuestión es que yo quiero que se presente todo en la misma hoja, es decir que los dos códigos se encuentren en la misma hoja...

he probado varias cosas y no doy con ello...

Agradezco de antemano vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dos códigos en Excel

Publicado por Jorge Morales (18 intervenciones) el 29/10/2008 22:39:58
Prueba con el siguiente codigo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Foto As Object, Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
Dim ruta As String
Application.ScreenUpdating = False
On Error Resume Next

If Target = [u25] Then
Me.Shapes("Foto").Delete
ruta = ThisWorkbook.Path & "" & [u25] & ".jpg"
Set Foto = Me.Pictures.Insert(ruta)
With Range("t1:d8")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
end if

if Target = [r25] Then
Me.Shapes("Foto").Delete
ruta = ThisWorkbook.Path & "" & [r25] & ".jpg"
Set Foto = Me.Pictures.Insert(ruta)
With Range("q25:q30")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
end if

Application.ScreenUpdating = True
End Sub


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar