如何解锁图表并禁止切割?

时间:2018-10-10 12:35:17

标签: excel vba

我有一个包含几个图表的Excel工作表,该工作表受保护并且所有图表均已锁定。

我希望用户可以复制图表。 右键单击并选择副本,或者在单击或双击图表时在触发宏。

我已经尝试过使用图表和ActiveChart.ProtectSelection的锁定属性,但是如果图表是未锁定或可选的,则用户仍然可以将图表从图纸上切掉。

为图表分配宏也无法解决问题,因为我还没有找到一种方法来找出单击了哪个图表(如果可能,我将避免为每个图表编写一个分离的子项。) )。

我尝试使用Chart1_BeforeDoubleClick事件,但无法正常工作(仅在图表工作表中有效吗?)

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以在该图表上分配一个子例程:

Private Sub Chart1_Click()
    ActiveSheet.ChartObjects(1).CopyPicture
    MsgBox "Chart copied."
End Sub

由于要在多个图表上使用它,因此需要首先确定图表的名称:

Sub Chart_Click()

    Dim chartName As String

    chartName = ActiveSheet.Shapes(Application.Caller).Name
    ActiveSheet.ChartObjects(chartName).CopyPicture
    MsgBox "Chart copied."

End Sub