Algo rápido es hacer lo mismo pero cambias el Left por Width y el Top por el Height, en cuestiones de efecto, la llegada al destino y el ajuste de la imagen no van a ser exactamente al mismo tiempo, pero creo que es algo mínimo y safa.
Private Sub Timer1_Timer()
Dim DestinoX As Long, DestinoY As Long
Dim DestinoW As Long, DestinoH As Long
Dim IncrementoX As Single, IncrementoY As Single
Dim DistanciaX As Long, DistanciaY As Long
Dim lPercent As Long
Dim X As Long, Y As Long, W As Long, H As Long
Const nSaltos As Integer = 1000
Const nResize As Integer = 400
DestinoX = Caja(Actual).Left
DestinoY = Caja(Actual).Top
DestinoW = Caja(Actual).Width
DestinoH = Caja(Actual).Height
With Image1
DistanciaX = Abs(.Left - DestinoX)
DistanciaY = Abs(.Top - DestinoY)
If DistanciaX + DistanciaY > 0 Then
If DistanciaX > DistanciaY Then
lPercent = (DistanciaY * 100 / DistanciaX)
IncrementoX = nSaltos
IncrementoY = nSaltos * lPercent / 100
Else
lPercent = (DistanciaX * 100 / DistanciaY)
IncrementoX = nSaltos * lPercent / 100
IncrementoY = nSaltos
End If
If .Left + IncrementoX < DestinoX Then
X = .Left + IncrementoX
Else
If .Left - IncrementoX > DestinoX Then
X = .Left - IncrementoX
Else
X = DestinoX
End If
End If
If .Top + IncrementoY < DestinoY Then
Y = .Top + IncrementoY
Else
If .Top - IncrementoY > DestinoY Then
Y = .Top - IncrementoY
Else
Y = DestinoY
End If
End If
Else
X = DestinoX
Y = DestinoY
End If
DistanciaX = Abs(.Width - DestinoW)
DistanciaY = Abs(.Height - DestinoH)
If DistanciaX + DistanciaY > 0 Then
If DistanciaX > DistanciaY Then
lPercent = (DistanciaY * 100 / DistanciaX)
IncrementoX = nResize
IncrementoY = nResize * lPercent / 100
Else
lPercent = (DistanciaX * 100 / DistanciaY)
IncrementoX = nResize * lPercent / 100
IncrementoY = nResize
End If
If .Width + IncrementoX < DestinoW Then
W = .Width + IncrementoX
Else
If .Width - IncrementoX > DestinoW Then
W = .Width - IncrementoX
Else
W = DestinoW
End If
End If
If .Height + IncrementoY < DestinoH Then
H = .Height + IncrementoY
Else
If .Height - IncrementoY > DestinoH Then
H = .Height - IncrementoY
Else
H = DestinoH
End If
End If
Else
W = DestinoW
H = DestinoH
End If
.Move X, Y, W, H
If (.Left = DestinoX) And (.Top = DestinoY) And (.Width = DestinoW) And (.Height = DestinoH) Then
Timer1 = False
End If
End With
End Sub