簡體   English   中英

選擇新數據時在Excel Graph上運行宏

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM