在Excel中复制(Ctrl-C)形状VBA继承旧位置值

问题描述 投票:0回答:1

我正在尝试将形状从一个单元格复制到另一个单元格(因为创建了新行,因此不需要单独的宏来执行此操作)。

当我使用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值作为旧的形状,即它被复制的形状,因此最终控制了那个单元而不是它实际所在的单元。关于如何的任何想法我可以获得新的形状来找到它实际所在的单元格的.Row和.Column?

excel vba shapes
1个回答
0
投票

如果复制的形状没有唯一的名称,则代码将出现问题。

Application.Caller是点击形状的名称 - 当它被形状的OnAction属性调用时,它会被传递给你的宏。

因此,如果有> 1个具有相同名称的形状会导致问题,因为当您调用ActiveSheet.Shapes(Application.Caller)时无法保证您获得正确的形状

© www.soinside.com 2019 - 2024. All rights reserved.