Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2010, 20:55   #1
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию excel2003 свойства класса ChartArea

дело в то что не могу заставить работать примерно такой код:

Код:
Charts.Add
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Показатели"
  ActiveChart.SetSourceData ActiveWorkbook.Worksheets(4).Range("a2:a10")
  i = ActiveSheet.ChartObjects.Count
  With ActiveChart.ChartArea
    .Interior.ColorIndex = 3
    .Left = 5 ' собственно эту строку и выбивает
  End With
выбивает "run-time error '1004'
нельзя установить свойства Left класса chartarea
Самое интересное, что схожий код в 2007 экселе выполняется на ура, и ошибки стали заметны только при тестировании в 2003м.
Осваиваю вба недавно,в литературе решения не нашел.. так что не судите строго)
ppklad вне форума Ответить с цитированием
Старый 22.07.2010, 10:17   #2
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию

может есть какието еще способы двигать диаграмму по листу? shapes().increment. работает както странно через раз, и двигает кнопки, которые двигать не нужно(
ppklad вне форума Ответить с цитированием
Старый 22.07.2010, 11:15   #3
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

см. вложение, макрос "test"

Все работает нормально через ShapeRange.Increment...
Вложения
Тип файла: zip Chart.zip (7.1 Кб, 11 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 22.07.2010, 21:54   #4
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию

спасибо большое, в 2007 работает чудесно, но в 2003 опять какая то засада=( следующий ниже код обрабатывает отлично все диаграммы но на последней выбивает ошибку Object doesn't support this property of metod причем последняя диаграмма выглядит иначе чем другие(серый фон и вообще немного другая), при повторном запуске макроса уже все диаграммы рисуются аналогично(серый фон..) и не смещаются( если не трудно поясните что не так происходит.. или ткните носом в литературу, буду очень признателен
Код:
i = 1
vi = -120
For Each ichart In ActiveSheet.ChartObjects
    ichart.Select
    If i Mod 2 <> 0 Then
      With Selection.ShapeRange: .IncrementLeft -350: .IncrementTop vi 'эту строку выбивает
      End With:
    Else
      With Selection.ShapeRange: .IncrementLeft 20: .IncrementTop vi
      End With:
      vi = vi + 245
    End If
    i = i + 1
Next

Последний раз редактировалось ppklad; 22.07.2010 в 21:57.
ppklad вне форума Ответить с цитированием
Старый 22.07.2010, 22:08   #5
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

можете выложить файл с этой "выглядит иначе чем другие" диаграммой?
EugeneS вне форума Ответить с цитированием
Старый 22.07.2010, 22:25   #6
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию

конечно, просто там довольно трудно с наскока разобраться.. тем более код очень криворукий
Вложения
Тип файла: rar Рабочий инструмент111.rar (55.6 Кб, 13 просмотров)
ppklad вне форума Ответить с цитированием
Старый 23.07.2010, 12:24   #7
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

вот в таком виде перемещает диаграммы нормально в Вашем коде:

Код:
For z = 1 To ActiveSheet.ChartObjects.Count
With ActiveSheet.ChartObjects(z)    
If i Mod 2 <> 0 Then
      .Left = -350: .Top = vi
Else
      .Left = 20: .Top = vi
      vi = vi + 245
 End If: End With
    i = i + 1
Next
EugeneS вне форума Ответить с цитированием
Старый 23.07.2010, 14:36   #8
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию

EugeneS, большое спасибо, сделал, работает(правда теперь все диаграммы серые, но это не важно), но так и не понял что не так делал( записывая, и затем разбирая макросы пришел к выводу, что обычные и "серые" диаграммы различаются, так серые эксель называет "Диагр. 15","Диагр. 14" и т.д., а обычные "Диаграмма 11","Диаграмма 9" но методы и свойства для передвижения использует те же самые, если кто хорошо разбирается с этими chart'ями растолкуйте пожалуйста
ppklad вне форума Ответить с цитированием
Старый 23.07.2010, 14:42   #9
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

к сожалению, не подскажу, с диаграммами сталкиваюсь крайне редко
EugeneS вне форума Ответить с цитированием
Старый 27.07.2010, 19:16   #10
ppklad
 
Регистрация: 21.07.2010
Сообщений: 6
По умолчанию

бьюсь над корректной работой в 2003 офисе, никак не хотят chartы удаляться
пробовал и
Код:
For Each ichart In ActiveSheet.ChartObjects
      ichart.Delete
    Next
и так
Код:
For z = 1 To (ActiveSheet.ChartObjects.Count)'chart.count количество верно показывает =(
  ActiveSheet.ChartObject(z).Delete
Next
не хотят "серые" удаляться.. помогите пожалуйста
Вложения
Тип файла: rar пример.rar (7.8 Кб, 11 просмотров)
ppklad вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
свойства TreeView street-walker Общие вопросы Delphi 2 09.06.2010 01:51
Параметр конструктора класса = объект этого класса nazavrik Общие вопросы C/C++ 6 14.02.2010 13:48
свойства DBNavigator Rin БД в Delphi 6 24.12.2009 00:04
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? TwiX Общие вопросы Delphi 3 15.11.2009 00:54
Свойства символов. proglamer Общие вопросы Delphi 3 05.12.2008 18:47