Определить прозрачный цвет для точки в серии в VBA - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь определить прозрачный цвет в VBA и применить его к некоторым сериям рассеяния XY в VBA. Проблема в том, что я установил цвет точек на основе функции Vlookup. Ряд, который не найден в Vlookup, должен быть прозрачным. Я попытался определить цвет внутри моего оператора With при цикле по серии. Я попытался назначить Прозрачность серии за пределы оператора «С». Ничто не похоже на работу.

'Outside With:
Set cht = ActiveSheet.ChartObjects("contract").Chart
ct = ActiveSheet.ChartObjects("contract").Chart.SeriesCollection.Count
Set mysrs = cht.SeriesCollection(ct)
mysrs.Format.Fill.Transparency = 0
mysrs.Format.Line.Transparency = 0

'Inside With:
                lnum = Application.VLookup(mysrs.Name, drng, 2, 0) 'This fails the first instance with G as a Type Mismatch Error.
                On Error GoTo ZZZ
                Select Case lnum
                    Case "G"
                        lColor = RGB(255, 0, 0)
                    Case "D"
                        lColor = RGB(0, 255, 0)
                    Case "M"
                        lColor = RGB(0, 0, 255)
                    Case "A"
                        lColor = RGB(0, 0, 0)
                End Select

                mysrs.MarkerBackgroundColor = lColor
                mysrs.Format.Line.Visible = msoFalse
                mysrs.Format.Line.Visible = msoTrue
                mysrs.Format.Line.ForeColor.RGB = lColor
ZZZ:
lColor = RGB(255, 255, 255) 'this is where I need to define Transparency    

1 Ответ

0 голосов
/ 28 августа 2018

Я немного смущен тем, чего вы пытаетесь достичь. Не показать точку или серию? Прозрачный или не заговор.

Однако ваш On Error находится не в том месте, поэтому поместите его до ожидаемой ошибки, например

On Error GoTo ZZZ
lnum = Application.VLookup(mysrs.Name, drng, 2, 0)      

Или объявите lnum как Variant, а затем используйте IsError test для lnum например,

Dim lnum As Variant
lnum = Application.VLookup(mysrs.Name, drng, 2, 0) 

If IsError(lnum) Then
    'Do something
Else
   'Do something else
End If     

Предполагается, что drng определен как Range объект.

...