2015-09-01 65 views
0

我有这个允许图表显示和隐藏的代码,但是我有太多的图表和硬编码每个都是一个很大的麻烦。因此,是否可以隐藏和显示基于活动图表的图表?显示和隐藏活动图表

我有这段代码,我试图将Chartobjects("Chart4")更换为ActiveChart,但它说对象不支持该属性。任何替代方法来实现这一点或者我的代码有什么问题?先谢谢你!

Sub ActiveChartShowHide() 


With Sheets("Sheet4").ChartObjects("Chart 4") 
.Visible = Not .Visible 
End With 


End Sub 

回答

2

ActiveChart指Chart对象是ChartObject对象的成员。你的代码应该是:

With ActiveChart.Parent 
    .Visible = Not .Visible 
End With 
+0

我得到一个“对象变量或块变量未设置”错误messgae – Niva

+0

您是否在运行代码之前激活了图表? –

+0

yup!我确实通过点击来激活它 – Niva

0

您只需选择您的图表,然后将其隐藏:

ActiveSheet.ChartObjects("Chart 1").Activate 
    Selection.Visible = false 
+0

但我仍然必须定义图表名称。我想激活光标所在的图表。 – Niva

1

你可以遍历图表对象,以显示或隐藏所有的人,以节省时间和打字:

Option Explicit 

Sub HideAllChartsInSheet1() 
    Dim oChartObject As ChartObject 

    For Each oChartObject In Sheet1.ChartObjects 
     oChartObject.Visible = False 
    Next 

    Set oChartObject = Nothing 
End Sub 

Sheet1替换为您的实际Worksheet对象的引用,当然使用oChartObject.Visible = True来显示ChartObjects。

EDIT: 让我们改变子修改特定图表对象:

Option Explicit 

Sub ChartVisible(psName As String, pbVisible As Boolean) 
    Dim oChartObject As ChartObject 

    For Each oChartObject In Sheet1.ChartObjects 
     If UCase(oChartObject.Name) = UCase(psName) Then 
      oChartObject.Visible = pbVisible 
     End If 
    Next 

    Set oChartObject = Nothing 
End Sub 

实施例:使用以下方法来隐藏 “图4” Sheet 1上:

Call ChartVisible("Chart 4", False) 
+0

我想选择性地隐藏和取消隐藏图表 – Niva

+0

对不起,误解了。我已经更新了答案,看看它是否可以使用。我不认为你可以使用ActiveChart的Visible属性。 –

+0

psName应该替换为图表名称isit? – Niva