2015-09-01 91 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