[英]Run macro on Excel Graph when I select new data
就像標題中所說的,我希望每當為圖形選擇一個序列時就能夠自動運行宏。 我需要將最后一個條形顯示為紅色,並且可以使用宏來執行此操作,但是當我選擇一系列新數據時,紅色條形是上一個數據選擇的最后一個條形。 因此,如果我在第一個選擇上有4個值,而我在下一個選擇中選擇了7個值,那么最后我將第4個條形顯示為紅色。
這是我使用的宏
Sub CustomChartMacro()
Application.ScreenUpdating = True
Dim w As Worksheet
Dim chtSeries As Excel.Series
Dim i As Long
Dim a As Long
'Call CustomChartMacro a = ActiveChart.SeriesCollection(1).Points.Count * ActiveChart.SeriesCollection.Count
For Each chtSeries In ActiveChart.SeriesCollection
With chtSeries
For i = a To .Points.Count
If .Values(i) = a Then
.Points(i).Interior.Color = RGB(204, 9, 47)
Else
.Points(i).Interior.Color = RGB(89, 89, 91)
End If
Next i
End With
Next chtSeries
End Sub
謝謝你的建議。
如果您將圖表放在圖表工作表中,則可以使用Chart_Select
事件自動運行此代碼。 每當您單擊圖表中的系列時,該代碼就會觸發。
右鍵單擊“圖表表”選項卡名稱,然后選擇查看代碼,然后將此模塊復制到圖表表中:
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
If ElementID = xlSeries Then CustomChartMacro
End Sub
下面的代碼怎么樣。 它將檢查該點是否為系列中的最后一個點,並將其顏色設置為紅色,否則將所有顏色設置為黑色。
Sub CustomChartMacro()
Application.ScreenUpdating = True
Dim w As Worksheet
Dim chtSeries As Excel.Series
Dim i As Long
Dim a As Long
For Each chtSeries In ActiveChart.SeriesCollection
With chtSeries
a = .Points.Count
For i = 1 To a
If i = a Then
.Points(i).Interior.Color = RGB(204, 9, 47)
Else
.Points(i).Interior.Color = RGB(89, 89, 91)
End If
Next i
End With
Next chtSeries
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.