Страницы: 1
RSS
Разбор ошибки: Run-time error '1004' . Нельзя установить свойство Values класса Series
 
Всем привет!
Имеется такой код:
Код
Rem меняем Диаграмму на 4 листе, делаем ее активной
     Rem RowCount - подсчитываем кол-во заполненных строк списка работ, только нужно снизу пустые строки удалить
     RowCount = Лист3.Cells(4, 9)
   Rem Дальше меняем параметры диаграммы (столбцы и отсечку соответсвенно)
    Лист4.ChartObjects(1).Activate
    Param1 = "='Итоговая диаграмма'!$BN$57:$BN$" + Trim(Str(57 + RowCount - 1))
    Param2 = "='Итоговая диаграмма'!$BO$57:$BO$" + Trim(Str(57 + RowCount - 1))
     ActiveChart.SeriesCollection(1).Values = Param1
     ActiveChart.SeriesCollection(2).Values = Param2
Данный код предназначен для отсечения пустых строк в таблице с целью последующей постройки диаграммы.
Код  рабочий, в версиях 07-10 года Экселя стабильно работает. Работал и в 2003, но сегодня у человека перестал запускаться.
Ошибку выдает на следующие строки:
Код
ActiveChart.SeriesCollection(1).Values = Param1
ActiveChart.SeriesCollection(2).Values = Param2
Что нужно сделать чтобы всё заработало?
 
1004 это ошибка приложения, скорее всего ошибка в названиях или ссылках...
Без конкретного примера это гадание на кофейной гуще
Изменено: LVL - 24.06.2014 14:28:35
 
Файл больше 2 мб веса. Даже архивом больше разрешенного в 100 кб.
Эта ошибка связана с версией Экселя?
Повторюсь, что файл перестал работать в 2003 экселе.
В 07/10 экселе стабильно работает.
Изменено: Роман shs - 24.06.2014 21:34:37
 
Роман shs, для больших файлов существуют файлообменники. Мылру, ргхост и т.д. и т.п.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Знаю о существовании файлообменников, но на работе запрещен доступ на них. Ни на один нельзя.
 
Мыло, скайп, айсикю тоже под запретом? Тогда из дому на файлообменник.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Код
ActiveChart.SeriesCollection(1).Values = Param1
ActiveChart.SeriesCollection(2).Values = Param2
Замените на
Код
ActiveChart.SeriesCollection(1).Formula = Param1
ActiveChart.SeriesCollection(2).Formula = Param2
или поюзайте справку VBA по Series Object Members
Я думаю, что причина ошибки, как ни странно, именно в этом: метод Values вот так описан:
Цитата
The value of this property can be a range on a worksheet or an array of constant values, but not a combination of both. See the examples for details.
Example
This example sets the series values from a range.
Код
Charts("Chart1").SeriesCollection(1).Values = _ Worksheets("Sheet1").Range("C5:T5")
To assign a constant value to each individual data point, you must use an array.
Код
Charts("Chart1").SeriesCollection(1).Values = _ Array(1, 3, 5, 7, 11, 13, 17, 19)
Изменено: hohlick - 24.07.2014 18:25:19
F1 творит чудеса
 
https://www.sendspace.com/file/hxvm4h   залил на файлообменник.
 
Замена Values на Formula ошибку исправило, но диаграммы не строятся.. нулевые значения пишутся
 
намек: так выглядит нормальная формула ряда:
Код
=РЯД(название;категории;'Итоговая диаграмма'!$BN$57:$BN$59;3)
у вас в коде:
Код
Param1 = "='Итоговая диаграмма'!$BN$57:$BN$" + Trim(Str(57 + RowCount - 1))
явно чего-то не хватает

Роман shs, посмотрите, куда у вас ссылается в макросе 2-й ряд. в таблице там пустые ячейки. И да, лучше все-таки FormulaLocal.
Код
Str(57 + RowCount - 1) 
не равно ли этому:
Код
Str(56 + RowCount) 
Изменено: hohlick - 25.06.2014 15:17:19
F1 творит чудеса
 
hohlick, прошу пояснить, что мне поправить и какой окончательный вид примет код...
Не силен в программировании и в макросах в частности.
Пока моих знаний хватает чтобы вставить код...
Цитата
hohlick пишет: явно чего-то не хватает
Чего тут не хватает?
 
  1. На двух разных компах в 2 разных Excel 2010 - в одном удалось повторить начальную ошибку, в другом код работает без проблем.
    Если ошибка повторяется, то тогда попробуйте покуритьвот это.
  2. Цитата
    но диаграммы не строятся.. нулевые значения пишутся
    А какие должны писаться значения, если ряд диаграммы ссылается на столбец, содержащий нулевые значения? Удивительно, если бы диаграмма показывала что-то другое. Буквально: в параметрах диаграммы вы прописываете 2-й ряд вот так:
    Код
    Param2 = "='Итоговая диаграмма'!$BO$57:$BO$" + Trim(Str(57 + RowCount - 1))
    Недолгий анализ показывает, что диапазон получающийся = $BO$57:$BO$59, и он содержит нули в виде значений.
    А вот почему он содержит нули - это уже вопрос к формулописцу, там длинная цепочка формул, ведущая на скрытые столбцы, и какие эти формулы должны давать результаты, я предсказывать не берусь, ибо не понимаю, что должно считаться, как и почему, точнее - лень разбираться. Но то, что в ячейке $BO$57 содержится ссылка =$BN$66, имеющую значение 0 - это медицинский факт. Я думаю, что проблема ваших диаграмм именно в этом. По крайней мере, если забить на листе ФИО1 значения на всю таблицу - что-то там перестраивается на диаграммах.
  3. Если вы хотите получить что-то конкретное в итоге, то тогда напишите, какой результат должен получаться с текущими исходными данными. Придумывать за вас его не охота
F1 творит чудеса
 
Неплохо бы подправить скрипт bb-кода, чтобы не вставлял после блоков "код" и "цитата" лишние переводы строк. Лениво переключаться в коды, бегать по тексту и удалять.
F1 творит чудеса
 
Цитата
hohlick пишет:
Неплохо бы подправить скрипт bb-кода ... Лениво переключаться в коды, бегать по тексту и удалять.
Предложите владельцу сайт свои услуги по правке кода.
Никуда в коды переключаться не нужно: увидели готовое сообщение - сразу исправьте (удалите пустую строку) прямо в тексте.
 
Цитата
hohlick пишет: какие должны писаться значения, если ряд диаграммы ссылается на столбец, содержащий нулевые значения?
тут идет ссылка на десятое значение в таблице для постройки линии тренда по значению 10 работы.
 
hohlick, опишу вкратце назначение программы. Программа подсчитывает оценки выставляемые специалистами по выдвигаемым работам на премии.
Т.е. есть перечень работ. Есть специалисты которые выставляют оценки по 10 показателям.
1
Param2 = "='Итоговая диаграмма'!$BO$57:$BO$" + Trim(Str(57 + RowCount - 1))
Этот код работает по десятой работе, которая является крайней по величине  которой строится линия тренда для определения работ, которые получат премию.
Данный макрос был предназначен для того чтобы строить диаграммы от количества выдвигаемых работ, т.к. количество работ непостоянно.

выкладываю обновленный файл, который у меня в 2010 экселе работает, а в 03 нет. Значения можно менять.
http://files.mail.ru/BC34993756764592BB35C7DD3403EEC2

П.С. забыл добавить, что даже если все значения будут заполнены, то все равно выдает ошибку.
Изменено: Роман shs - 26.06.2014 10:02:33
 
попробуйте вот такой код:
Код
Лист4.ChartObjects(1).Chart.SeriesCollection(1).Values = Лист4.Range("$BN$57").Resize(RowCount)

если сработает без ошибки - то вот полный код макроса:
Скрытый текст
Изменено: hohlick - 26.06.2014 19:33:23
F1 творит чудеса
 
hohlick, спойлер при подготовке сообщения есть, никто не прятал.
 
hohlick, работает код! Спасибо!
 
Лучше поздно, чем никогда :)
F1 творит чудеса
Страницы: 1
Наверх