«Объект VBA Error 438 не поддерживает это свойство или метод»

#vba #excel

#vba #excel

Вопрос:

У меня есть большой файл Excel, в котором данные извлекаются из базы данных и экспортируются в Excel, где формируется график. Цвет различных частей графика контролируется функцией, в которой вы заполняете ячейку на другом листе, и считываете ее с помощью кода. Проблема в том, что код будет работать только до тех пор, пока есть один цвет, теперь я хочу использовать свой шаблон, таким образом, формат Ячейки -> Заливка -> Стиль шаблона. Я пытался решить это таким образом, но я получаю ошибку времени выполнения 438 в строке со скобками. Любая помощь приветствуется!

                 Else
                   .FullSeriesCollection(i).ChartType = xlLineStacked
                   .FullSeriesCollection(i).Format.line.Weight = 2.5
                   .FullSeriesCollection(i).Format.line.ForeColor.rgb = _
                    getRGB(findInSub(setupLC, findInCategory(tables, _
                    Right(tbl.Name, Len(tbl.Name) - 3)).offset(0, 6), lineC, _
                    .SeriesCollection(i).Name))
                With Sheets("mysheet").Range("mycell")
             If .Cells.Interior.Pattern = -4142 Or .Cells.Interior.Pattern = 1 Then
             .FullSeriesCollection(i).Format.Fill.Patterned = .Interior.Color
             Else
              (.FullSeriesCollection(i).Format.Fill.Patterned = .Cells.DisplayFormat.Interior.PatternColor)
             End If
            End With
                End If
            End If
        Next i
    End With
End With
 

/ Йохан

Комментарии:

1. Не вижу «отмеченной строки» в вашем коде :). Пожалуйста, укажите, какая строка выдает ошибку

2. Я не знал, как пометить строку, поэтому теперь вокруг нее есть круглые скобки. Этот: (.FullSeriesCollection(i) . Формат.Заполнить. Шаблон = .Ячейки. Формат отображения. Интерьер. Цвет шаблона)

Ответ №1:

Вот проблема, которую я вижу: вы вызываете .FullSeriesCollection внутри With блока, который ссылается на диапазон, тогда .FullSeriesCollection как не является частью объекта диапазона. Это часть Chart объекта. Кажется, у вас есть несколько With блоков. Я бы предложил вместо использования With Sheets("mysheet").Range("mycell") WITH block просто использовать полную ссылку для перехода к .Cells (т.Е. Thisworkbook.Worksheets("mysheet").Range("mycell").Cells ... ). Это должно решить проблему, если ваш With блок до этого ссылается на Chart объект