Копирование (Ctrl-C) фигур в Excel VBA наследует старые значения положения - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь скопировать фигуру из одной ячейки в другую (поскольку создаются новые строки, поэтому для этого не требуется переопределять отдельный макрос).

Когда я делаю это, используя Ctrl-C и Ctrl-V, а затем пытаюсь запустить следующий макрос ...

Dim b As Object, rn As Integer, cn As Integer
Set b = ActiveSheet.Shapes(Application.Caller)
With b.TopLeftCell
    rn = .Row
    cn = .Column
End With
*then other stuff to manipulate that cell

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

1 Ответ

0 голосов
/ 14 марта 2019

Если ваша скопированная фигура не имеет уникального имени, то у вашего кода будут проблемы.

Application.Caller - это имя фигуры, по которой щелкнули, - она ​​передается вашему макросу, когда она вызывается свойством OnAction фигуры.

Таким образом, если существует> 1 фигура с тем же именем, которая вызовет проблемы, поскольку нет гарантии, что вы получите правильную фигуру при вызове ActiveSheet.Shapes (Application.Caller)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...