Как нарисовать свой массив в точечной диаграмме?

Программирование на Visual Basic for Applications
ZEugen
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2004 (Пн) 10:44

Как нарисовать свой массив в точечной диаграмме?

Сообщение ZEugen » 26.04.2004 (Пн) 16:07

при попытке занести в серию данные из своего массива
получаю ошибку
нельзя присвоить свойство Value слассу Series
код следующий

Dim a(), x() As Variant
k = 81
ReDim a(k)
ReDim x(k)

For i = 0 To k
a(i) = i
x(i) = i
Next i
Sheets.Add Type:=xlChart, After:=Sheets(Sheets.count)
ActiveSheet.Move After:=Sheets(Sheets.count)
ActiveChart.ChartArea.Select
ActiveChart.ChartType = xlXYScatter
With ActiveChart
.Name = "Figure test"
.HasTitle = True
.ChartTitle.Characters.Text = "Figure Test"
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = x
.SeriesCollection(1).Values = a
.SeriesCollection(1).Name = "test"
End With


а если число элементов в массиве меньше 81 (k=80)
все работает ))
где ограничение в Excelle? работаю с XP
и еще проблема если присваиваю single тоже самое
не работает с более чем 20 элементами ((( :?:

ZEugen
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2004 (Пн) 10:44

Re: Как нарисовать свой массив в точечной диаграмме?

Сообщение ZEugen » 27.04.2004 (Вт) 8:25

В догонку еще вопросы для спецов.
Как я понимаю в VBA можно работать только через ячейки и листы?
На динамические массивы и переменные существует жесткое ограничение по размеру? Где либо в доках описаны эти ограничения?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:08

Интересно :)
Ограничения VBA - по размеру оперативки.
Ограничения Excel - набери в индексе его справки "технические характеристики", там они все есть.
Только эти ограничения гораздо выше... Но почему-то действительно нельзя установить массив больше 81 элемента :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ZEugen
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2004 (Пн) 10:44

Облом с VBA (

Сообщение ZEugen » 27.04.2004 (Вт) 11:03

А если сделаешь
а(i)=i*0.1
то ограничение станет в 20 элементов.
Проверил в Office 2003 и XP на разных компах тоже самое
причем какие-то смешные ограничения.
Я бы понял если бы массив занимал бы хотя бы мегабайт,
а то меньше кило (.
Сам работаю с VBA редко, теперь буду еще реже ).

ZEugen
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2004 (Пн) 10:44

Re: Облом с VBA (

Сообщение ZEugen » 27.04.2004 (Вт) 18:45

Мне объяснили причину -
оказывается
SeriesCollection.Value=а
хранит значение как текст - стринг размером 255
поэтому заполнение массива от 0-80 плюс разделители
как раз и будет около 255.
Поэтому в принципе нельзя передать напрямую вычисленные данные в большем объеме в диаграмму.
Так что только через таблицу (( и range

Тогда следующий вопрос - можно ли убрать ссылки на данные
в диаграмме - при этом сохранив все данные в ней -
типа не хочу чтобы юзер копался в промежуточных расчетах
а видел только результат -диаграмму

Евген
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 66
Зарегистрирован: 01.07.2003 (Вт) 14:13
Откуда: СПб

Сообщение Евген » 28.04.2004 (Ср) 10:41

Может лист сделать для этого
Код: Выделить всё
.Visible=xlExcelVeryHidden

и в нем хранить рассчетные данные...
Ёж птица гордая, пока не пнешь - не полетит!

ZEugen
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 26.04.2004 (Пн) 10:44

VBA (

Сообщение ZEugen » 28.04.2004 (Ср) 13:31

Евген писал(а):Может лист сделать для этого
Код: Выделить всё
.Visible=xlExcelVeryHidden

и в нем хранить рассчетные данные...


Да так уже и сделал.
Но продвинутый юзер может сделать
и .Visible=True )
Где то я видел код - как можно ссылки на лист убрать и заморозить
текущие значения в диаграмме и расчетах?
Может кто знает как сделать такой финт?
После этого временный лист можно вообще удалить.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37

    TopList