Движущиеся изображения между ячейками в VBA

Я имею изображение в ячейке (3,1) и хотел бы переместить изображение в ячейку (1,1).

У меня есть этот код:

ActiveSheet.Cells(1, 1).Value = ActiveSheet.Cells(3, 1).Value
ActiveSheet.Cells(3, 1).Value = ""

Однако кажется, что значение ячейки пусто для ячеек, содержащих изображения, поэтому изображение не перемещено, и изображение в ячейке (3,1) не удалено. Ничего не произошло, когда я выполняю тот конкретный бит кода.

Любая справка значительно ценится.

Спасибо.

8
задан Ben McCormack 15 December 2009 в 14:30
поделиться

2 ответа

Отчасти проблема с вашим кодом заключается в том, что вы думаете об изображении как о значении ячейки. Однако, хотя изображение может казаться «внутри» ячейки, на самом деле это не значение ячейки.

Чтобы переместить изображение, вы можете сделать это относительно (используя Shape .IncrementLeft или Shape.IncrementRight ) или вы можете сделать это абсолютно (установив значения Shape.Left и Shape.Top ).

В приведенном ниже примере я демонстрирую, как вы можете переместить фигуру в новое абсолютное положение с сохранением или без сохранения исходного отступа от исходной ячейки (если вы не сохраняете исходный отступ,

7
ответ дан 5 December 2019 в 17:38
поделиться

Быстрый и грязный способ:

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
3
ответ дан 5 December 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: