Скопируйте и вставьте фигуру с одного листа на другой - PullRequest
0 голосов
/ 18 июня 2020

Может кто-нибудь сказать мне, почему этот Excel VBA не может скопировать и вставить фигуру с одного листа на другой? Форма «StandingsPix» и лист «Картинки» существуют в моей книге, и на самом деле, когда я записываю макрос, чтобы сделать это вручную, он создает аналогичный код. Переменная не установлена ​​». Помощь с благодарностью.

Sub CopyPictureToScorecard(TargetCells As Range)

Dim p As Shape
Dim p2 As Shape
Dim TargetWS As Worksheet

    Set TargetWS = Sheets("Scorecards")

    p = Sheets("Pictures").Shapes.Range(Array("StandingsPix"))      <== Fails Here

    p.Copy
    TargetWS.Paste

    'make sure the picture is properly centered on the scorecard
    Set p2 = TargetWS.Shapes(TargetWS.Shapes.Count)

            p2.Width = p.Width
            p2.Height = p.Height
            p2.Top = TargetCells.Top + (TargetCells.Height / 2) - (p2.Height / 2)
            p2.Left = TargetCells.Left + (TargetCells.Width / 2) - (p2.Width / 2)
            p2.Line.Visible = False

End Sub

Когда я записываю макрос, выполняющий это вручную (успешно!), Вот код, который он сгенерировал:

Sheets("Pictures").Select
ActiveSheet.Shapes.Range(Array("StandingsPix")).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Scorecards").Select
Range("K24").Select
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft 621
Selection.ShapeRange.IncrementTop -369.75
...