Копирование фигуры с одного листа на другой со смещением в пикселях - PullRequest
0 голосов
/ 28 февраля 2020

Добрый день,

Я хотел бы скопировать элемент с одного листа на другой. Это простая проблема, когда мы опираемся на приблизительный диапазон ячеек. В моем случае проблема не выглядит простой, потому что я хочу иметь некоторое смещение.

Запрос, представленный здесь: Вставка Excel VBA в смещение активной ячейки

на самом деле не решает мою проблему, поскольку показывает смещение целыми ячейками.

Я хочу иметь смещение в пикселях, а не в ячейках. Подробности ниже. Темная стрелка показывает объект, который мне удалось вставить в свой лист. Красная стрелка показывает местоположение цели этого объекта. К сожалению, он не может соответствовать диапазону ячеек.

enter image description here

Мой код выглядит так:

 Sub Divider()
 Sheets("Cables 1").Shapes("Divider1").Copy
 Location ActiveSheet.Range("B25").PasteSpecial
 Selection.Name = "Divider"
 End Sub

 Function Location(s, Target As Range)
 s.Left = Target.Left + 3
 s.Top = Target.Top - 1
 End Function

К сожалению, отладчик не переносит имя функции до ActiveSheet. Я получаю ошибку вместо. Аргумент не является обязательным

Есть ли способ сделать это небольшое смещение?

1 Ответ

1 голос
/ 28 февраля 2020

Попробуйте

Sub Divider()
    Dim Ws As Worksheet
    Dim Shp As Shape

    Set Ws = ActiveSheet

    Sheets("Cables 1").Shapes("Divider1").Copy
    Ws.Range("B25").PasteSpecial
    Selection.Name = "Divider"

    Set Shp = Ws.Shapes("Divider")
    Location Shp, Range("b25:L50")
End Sub

Function Location(s As Shape, Target As Range)
    With s
        .Left = Target.Left + 3
        .Top = Target.Top + 3
        .Width = Target.Width - 6
        '.Height = Target.Height - 6
    End With
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...