我已经尝试了很长一段时间并且已经失败了......
我有一张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代码。
任何想法或意见都表示赞赏。 谢谢, 保罗
答案 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”上的图像应自动更新。