Dim picture As Shape
Shape
- это тип объекта, picture
- это переменная объекта.
picture = ActiveSheet.Shapes.Range(Array("Picture 1"))
Вы не можете назначить объектСсылка, как это.Что говорит вам ошибка времени выполнения, так это то, что отсутствует ключевое слово Set
.
Set picture = ActiveSheet.Shapes.Range(Array("Picture 1"))
Это говорит о том, что вам не нужно делать Sheets("Logo").Activate
.
Set picture = ActiveWorkbook.Worksheets("Logo").Shapes.Range(Array("Picture 1"))
Или, если лист "Logo"
существует во время компиляции в книге, в которой выполняется макрос, установите его свойство (Name)
, скажем, LogoSheet
, и затем вы можете сделать это:
Set picture = LogoSheet.Shapes.Range(Array("Picture 1"))
Если он существует в книге, в которой выполняется макрос, но создается только во время выполнения, ActiveWorkbook
также не требуется:
Set picture = ThisWorkbook.Worksheets("Logo").Shapes.Range(Array("Picture 1"))
Если форма Picture 1
- это отдельная фигура, материал .Range(Array(...))
является излишним, и это может быть все, что вам нужно (при условии, что для свойства (Name)
этого листа установлено значение LogoSheet
:
Set picture = LogoSheet.Shapes("Picture 1")