Объединение имен ссылок в цикле - PullRequest
0 голосов
/ 02 мая 2019

Я пытался написать что-то, что мне показалось простым кусочком кода.

У меня есть несколько диаграмм, где макет должен обновляться на основе пользовательского ввода (данные для серии определены в другом подпункте). Я определил ряд серий с определенными назначенными цветами RGB - они называются «Ser1», «Ser2», «Ser3» и т. Д. Предполагается, что подпрограмма будет проходить по каждой диаграмме и обновлять цвета, назначенные этим сериям. Размер «i» - это номер серии, подлежащей обновлению. Чтобы упростить это, я просто хочу объединить количество серий "i" с названием серии (то есть "Ser" + "i" = "Ser1"). Я написал пример того, что я пытаюсь сделать ниже. В настоящее время код не ссылается на серию правильно (т.е. он не объединяет «Ser» с «i», чтобы разобрать «Ser1», «Ser2» и т. Д.), Я искал решение, но я не был в состоянии найти способ правильно комбинировать «Ser» и «i» в любом месте.

Sub ChartLayout_2()
With Sheets("Table")

Dim Ser1, Ser2, Ser3 As Long

Ser1 = RGB(0, 112, 192)
Ser2 = RGB(222, 28, 133)
Ser3 = RGB(136, 0, 56)

Set Cht = .ChartObjects("Chart 9").Chart
With Cht
For i = 1 To j
.SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser & i
Next i
End With

Set Cht = .ChartObjects("Chart 10").Chart
With Cht
For i = 1 To j
.SeriesCollection(i).Format.Line.ForeColor.RGB = Ser & i
Next i
End With

End With
End Sub

1 Ответ

1 голос
/ 02 мая 2019

Вы не можете создавать имена переменных таким образом, вместо этого вам нужен массив.

Где вы определяете j?

Sub ChartLayout_2()

Dim Ser(1 To 3) As Long

With Sheets("Table")
    Ser(1) = RGB(0, 112, 192)
    Ser(2) = RGB(222, 28, 133)
    Ser(3) = RGB(136, 0, 56)

    Set Cht = .ChartObjects("Chart 9").Chart
    With Cht
        For i = 1 To j 'j must equal 3
            .SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser(i)
        Next i
    End With

    Set Cht = .ChartObjects("Chart 10").Chart
    With Cht
        For i = 1 To j
            .SeriesCollection(i).Format.Line.ForeColor.RGB = Ser(i)
        Next i
    End With
End With

End Sub

Или

Sub ChartLayout_2()

Dim Ser(1 To 3) As Long

With Sheets("Table")
    Ser(1) = RGB(0, 112, 192)
    Ser(2) = RGB(222, 28, 133)
    Ser(3) = RGB(136, 0, 56)

    For i = 1 To j 'j must equal 3
        .ChartObjects("Chart 9").Chart.SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser(i)
        .ChartObjects("Chart 10").Chart.SeriesCollection(i).Format.Line.ForeColor.RGB = Ser(i)
    Next i
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...