Скрыть диаграммы от значения ячейки - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть ячейка с раскрывающимся списком значений. График 1-4 Я пытаюсь запустить довольно простой скрипт VBA, чтобы показать только выбранную диаграмму, но она не работает, и я не уверен, почему.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    If Range("A1").Value = "Chart 1" Then
        ActiveSheet.ChartObjects("Chart 1").Visible = True
        ActiveSheet.ChartObjects("Chart 2").Visible = False
        ActiveSheet.ChartObjects("Chart 3").Visible = False
        ActiveSheet.ChartObjects("Chart 4").Visible = False
    Else
        ActiveSheet.ChartObjects("Chart 1").Visible = False
        ActiveSheet.ChartObjects("Chart 2").Visible = False
        ActiveSheet.ChartObjects("Chart 3").Visible = False
        ActiveSheet.ChartObjects("Chart 4").Visible = False
    End If
End If
End Sub

Я получаю сообщение об ошибке:

error

Начальный оператор имеет значение, так что только код будет выполняться, если значение в ячейке A1 будет изменено. Также, может быть, мне стоит использовать оператор with?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Я пишу это как ответ согласно комментарию Джона Пельтье.

Как указывал SJR, я почти уверен, что это должен быть какой-то код / ​​комментарий или что-то иное вне вашей подпрограммы, ваш код как таковойстоит правильно (если вы называете диаграммы в вашем коде) ...

0 голосов
/ 24 апреля 2018

Попробуйте создать процедуру в модуле, который работает с логикой диаграммы. Например:

В модуле рабочего листа:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        SetChartVisibility ActiveSheet
    End If
End Sub

Затем в отдельном модуле:

Public Sub SetChartVisibility(ByRef ws As Worksheet)
    With ws
        If .Range("A1").Value = "Chart 1" Then
            .ChartObjects("Chart 1").Visible = True
            .ChartObjects("Chart 2").Visible = False
            .ChartObjects("Chart 3").Visible = False
            .ChartObjects("Chart 4").Visible = False
        Else
            .ChartObjects("Chart 1").Visible = False
            .ChartObjects("Chart 2").Visible = False
            .ChartObjects("Chart 3").Visible = False
            .ChartObjects("Chart 4").Visible = False
        End If
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...