Как сделать этот код более плавным?И отмените выбор в конце - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь изменить цвет моей гистограммы на основе каждой кнопки, которую я нажимаю. И в конце кода я не хочу, чтобы его выбирали на графике. Вот один из моих кодов для кнопки. Надеюсь, что есть какой-то способ улучшить этот код или, возможно, пойти в другом направлении. Я также пытаюсь объединить эти два кода.

Sub Add_Value_Field

    Dim pt As PivotTable
    Dim pf As PivotField
    Dim sField As String

    Set pt = ActiveSheet.PivotTables(1)
    sField = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text

    For Each pf In pt.DataFields
    If pf.Name <> "Values" Then
        pf.Orientation = xlHidden
    End If
    Next pf

    pt.PivotFields(sField).Orientation = xlDataField

End Sub

С этим кодом:

Sub Unselect()
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(1).Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoTheColorAccent2
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.PlotArea.Select
    ActiveSheet.ChartObjects("Chart 1").Activate
End Sub

Надеюсь, это облегчило понимание.

1 Ответ

0 голосов
/ 16 апреля 2019

Графики сложно работать. Я видел себя в положении, что код просто не будет работать, если я не использую .Activate на графике. В этом случае способ сделать код проще, но он будет работать так же, не будучи быстрее.

Sub Unselect()
    Set wk = ThisWorkbook
    'We are working with charts, we have to activate the charts sometimes.
    'Adding this next two lines will let your code work from any other Sheet.
    wk.Sheets("SheetName").Activate
    wk.Sheets("SheetName").ChartObjects("Chart 1").Activate
    'Skip the select portion and go right to the format.
    With ActiveChart.FullSeriesCollection(1).Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoTheColorAccent2
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...