Макрос в Excel

sasha007

хелпа нет
а то сама нашла бы:)
мне нужно сделать так, что когда я запускаю макрос
он к текущему значению ячейки ну например A7 прибавлял 1 и получал A8
То есть увеличивал data source для графика
как это записать
ActiveChart.SeriesCollection(3).Values = "='общая стат'!R3C6:R7C6"

artimon



Sub Macros
ActiveCell.Cells(2, 1).Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
End Sub

sasha007

хм
я видимо некорректно поставила задачу
тогда так
у меня есть некая облась данных
на основе их я строю график
но я добавляю в данные еще одну строчку и мне надо изменить у графика data source
вотт я и хочу написать макрос который расширяет эту дата соурсе
то есть увесличивает с а1:a7 до a1:a8
ну и так далее

artimon

Тяжко. Я в VBA не атэц. А атцы молчат чего-то...

Ffever

Атцы в VBA - это, простите, как вожди отсталого племени в дебрях Южной Америки.

sasha007

да блин
тут помоему ничего сложного нет:)
Я сама такое писала
просто давно уже

stiiv

ещё актуално?

sasha007

я что-то написала
но было бы интересно как это возможно сделать
так что считаем что актуально:)

stiiv

тогда счас сам пробобую...

artimon

Со мной поделитесь результатом. Мне тоже интересно.

stiiv

вот то что можно задействовать:
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("B7:B24")
или даже так (если данные не целиком в одном столбце):
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("B7:B24,B25")
далее понятно?

sasha007

хм
суть в том что нужно сначала узнать а какой там уже задан Range
Это оказалось сложнее

stiiv

ааа,а вот и не надо - есть вроде такой метод :
Worksheets(2).ChartObjects(1).Chart.SeriesCollection.Extend Worksheets(1).Range("c26:c28")
он добавляет к существующим данным указанный Range

stiiv

а узнать какой уже задан м.б. и нереально, я, по крайней мере, нашёл только замену Range на что-то и дополнение существующего - создаётся полное ощущение, что хранится это где-то в ж. куда без перелопачивания всего VBA не доберёшся...

artimon

У Chart там есть объект DataTable который возвращает тип Range.

stiiv

не совсем... он возвращает только на чтение объект DataTable, а где у него свойство типа Range я не нашёл...

artimon

Он сам типа Range, вроде.

stiiv

какой офис? - в моём показывает, что это совсем объект с кучкой свойств и несколькими методами

stiiv

у меня это выглядит так:
"Property DataTable As DataTable
read-only
Member of Excel.Chart"
(из objeckt browser'а привести список свойств и методов? - стоит MS office 2000, SP2

artimon

Согласен, стормозил. У меня тоже.

stiiv

кстати, то что это (доступ к исходным данным) толком не реализовано, свидетельсвтвует, на мой взгляд, о
лени разработчиков VBA (в том, что они заюзали одноимённый объект из Дельфи я уверен) - ломало их видете-ли интерфейс класса править...

artimon

Ага. Причем сам объект знает откуда он берет данные.
А как это можно сделать криво, коли уж прямо не получилось?

stiiv

1) можно попристальнее поискать эту строчку с ссылкой на данные
2) можно юзать описанные выше методы замены на новый Range или дополнения существующего :-

stiiv

кстати строчка может оказаться и чёрти где вообще - ну: application.charts(i)...., т.е. где-то среди каких-то дополнительных левых наборов - я пока не видел полного схематичного описания всех объектов VBA
Оставить комментарий
Имя или ник:
Комментарий: