Я имею изображение в ячейке (3,1) и хотел бы переместить изображение в ячейку (1,1).
У меня есть этот код:
ActiveSheet.Cells(1, 1).Value = ActiveSheet.Cells(3, 1).Value
ActiveSheet.Cells(3, 1).Value = ""
Однако кажется, что значение ячейки пусто для ячеек, содержащих изображения, поэтому изображение не перемещено, и изображение в ячейке (3,1) не удалено. Ничего не произошло, когда я выполняю тот конкретный бит кода.
Любая справка значительно ценится.
Спасибо.
Отчасти проблема с вашим кодом заключается в том, что вы думаете об изображении как о значении ячейки. Однако, хотя изображение может казаться «внутри» ячейки, на самом деле это не значение ячейки.
Чтобы переместить изображение, вы можете сделать это относительно (используя Shape .IncrementLeft
или Shape.IncrementRight
) или вы можете сделать это абсолютно (установив значения Shape.Left
и Shape.Top
).
В приведенном ниже примере я демонстрирую, как вы можете переместить фигуру в новое абсолютное положение с сохранением или без сохранения исходного отступа от исходной ячейки (если вы не сохраняете исходный отступ,
Быстрый и грязный способ:
Public Sub Example()
MoveShape ActiveSheet.Shapes("Picture 1"), Range("A1")
End Sub
Private Sub MoveShape(ByVal shp As Excel.Shape, ByVal target As Excel.Range)
shp.IncrementLeft -(shp.TopLeftCell.Left - target.Left)
shp.IncrementTop -(shp.TopLeftCell.Top - target.Top)
End Sub