2017-05-03 81 views
1

我不會說英語,但我希望你能理解我。僅適用最後一個數據標籤的VBA代碼

這是關於繪製圖形的VBA代碼。我試圖自動化我的工作表,並在互聯網上找到了一個簡單易用的代碼。更新系列後,我的意圖是清除除最後一個之外的所有數據標籤。

的代碼是:

Dim oChart As ChartObject 
Dim MySeries As Series 

For Each oChart In ActiveSheet.ChartObjects 
For Each MySeries In oChart.Chart.SeriesCollection 

    'Clear Existing Data Labels 
     MySeries.ApplyDataLabels (xlDataLabelsShowNone) 

    'Apply Labels to Last Point 
     MySeries.points(MySeries.points.Count).ApplyDataLabels 

    Next MySeries 
Next oChart 

End Sub 

但是,這個代碼運行的只有三十個圖表,併爲他人無法正常工作。我查找了系列之間的相似點或差異(例如名稱格式或圖形類型,條形圖,餅圖的類型),但我找不到問題

宏的第一部分是刪除所有數據標籤儘管如此,所有圖表都能正常工作。我也嘗試爲多個工作表和工作簿執行此操作,但也不成功。

+0

如果你沒有遍歷所有的'Worksheets',它是如何處理所有工作表的?你需要爲'ThisWorkbook.Workheets中的每一個ws'循環 –

回答

0

你應該在每張表,每個圖表,每個系列和點上。 ApplyDataLabels是屬性,不是一個點或多個點。 xlDataLabelsShowNone並不意味着沒有一點。這意味着標籤不會以任何格式顯示。你可以閱讀關於這個對象here

下面的代碼會爲你做這項工作。

Sub remove_label() 

    Dim wsh As Worksheet 
    Dim oChart As ChartObject 
    Dim MySeries As Series 
    Dim oPoints As Points 
    Dim MyPoint As Point 
    Dim i As Long 

    For Each wsh In ThisWorkbook.Worksheets 
     For Each oChart In wsh.ChartObjects 
     For Each MySeries In oChart.Chart.SeriesCollection 
      Set oPoints = MySeries.Points 
      i = oPoints.Count 
       For Each MyPoint In oPoints 
        i = i - 1 
        If i <> 0 Then 
        'Clear Existing Data Labels 
         MyPoint.ApplyDataLabels xlDataLabelsShowNone 
        Else 
        'Apply Labels to Last Point 
         MyPoint.ApplyDataLabels xlDataLabelsShowValue 
        End If 

      Next MyPoint 
     Next MySeries 
     Next oChart 
    Next wsh 

End Sub 
+0

真的很感謝,但它還沒有工作。我想在一張表中首先自動化圖形。我在新的工作簿中根據您的消解來更改代碼,代碼爲六張圖中的三張圖運行。有兩個系列或更多的圖形。有時代碼會運行在兩個圖表系列中,有時候只能用於一個系列。 (對不起,語言錯誤)。 –

+0

@Ágila立即檢查。 – Masoud

相關問題