Excel-VBA:在受保护的工作表上编辑图表的轴

时间:2015-08-11 08:14:05

标签: excel vba excel-vba

我已经尝试了很长一段时间并且已经失败了......

我有一张excel表,用户可以在其中复制数据。工作表已包含一个自动填充输入数据的图表。 有一个按钮可以从工作表中获取值(在M8和M9中)以使用以下makro缩放图表:

With ActiveSheet.ChartObjects("Diagramm 2").Chart

    .Axes(xlValues, xlPrimary).MaximumScale = Sheets("Sheet1").Range("M8").Value
    .Axes(xlValues, xlPrimary).MinimumScale = Sheets("Sheet1").Range("M9").Value

End With

这给我一个错误“对象”_Chart“的方法'轴'失败了。”

工作表受到保护,但会检查保护对话框中的“编辑对象”选项。 该图也设置为不受保护。

除了用

包围代码之外还有什么办法吗?
ActiveSheet.Unprotect
'code here
ActiveSheet.Protect

因为密码可能会在之后发生变化,用户不必编辑vba代码。

任何想法或意见都表示赞赏。 谢谢, 保罗

1 个答案:

答案 0 :(得分:0)

我发现的一种可能的解决方法可能如下 (见http://answers.microsoft.com/en-us/office/forum/office_2010-customize/vba-error-for-chart-on-protected-sheet/b7cf62ca-6c08-4ee9-a596-d457be84fd95):

添加另一张未受保护但隐藏的工作表(“Sheet2”)。 在此工作表中,根据“Sheet1”中的数据创建图表。 从“Sheet2”和“Sheet 1”复制图表go Paste-> Image。 现在选择图像并添加一个类似于“= Sheet2!A1:G12”的公式。这将显示您在A1:G12中的“Sheet2”上看到的内容(当然您可能需要移动图表和/或更改范围)。 从上面编辑makro到:

Sheets("Sheet2").ChartObjects("Diagramm 2").Activate
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlValue).Select

With ActiveChart.Axes(xlValue)
   .MaximumScale = Sheets("Sheet1").Range("M8").Value
   .MinimumScale = Sheets("Sheet1").Range("M9").Value
End With

现在更改(隐藏)工作表“Sheet2”中的图表时,“Sheet1”上的图像应自动更新。