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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2015, 14:52   #1
zot315
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 20
По умолчанию Можно ли средствами VBA узнать номер уже созданной диаграммы?

Здравствуйте!
Помогите, пожалуйста, в следующей проблеме.

Я сделал макрос (Excel 2003, первая в жизни попытка), он работает, обращается к расположенным на листе 3-м диаграммам по очереди и изменяет их успешно. Каждую по разному, как и надо. Потом обращается к 3-м диаграммам на следующем листе и т.д. Таких листов в 3-мя диаграммами немало. Но на некоторых листах, судя по реакции Debug, номера диаграмм почему-то другие, т.е. не в том порядке, напрмер не 1,2,3, а 2,1,3 (хотя и создавались путем копирования предыдущего листа).

Можно ли средствами VBA узнать номер диаграммы, чтобы затем с нужными изменениями обратиться уже к нужной диаграмме? Или применить в данной ситуации какой другой трюк?

Спасибо!
zot315 вне форума Ответить с цитированием
Старый 17.07.2015, 15:00   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от zot315 Посмотреть сообщение
Или применить в данной ситуации какой другой трюк?
Здравствуйте.
Другой,обращаться по имени диаграммы.
При копировании надо этот момент не упустить и присвоить соответствующие именв
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.07.2015, 15:06   #3
zot315
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Здравствуйте.
Другой,обращаться по имени диаграммы.
При копировании надо этот момент не упустить и присвоить соответствующие именв
Спасибо! К сожалению несколько книг с полуторасотней листов уже созданы и не упустить этот момент при копировании уже поздно? Как быть?
zot315 вне форума Ответить с цитированием
Старый 17.07.2015, 15:18   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Ищите признаки для распознавания диаграмм(что-то уникальное),назначайте понятные имена.Это макросом.
Если нет,то руками
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.07.2015, 15:21   #5
zot315
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 20
По умолчанию

ОК! Спасибо, буду пробовать) В общем-то к этому мысли и двигались, но была надежда что VBA это умеет(
zot315 вне форума Ответить с цитированием
Старый 17.07.2015, 15:25   #6
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Если для всех диаграмм одинаковое действие, то можно посчитать количество на листе и выполнить простой цикл

Код:
Sub Макрос()
'номер последней диаграммы
i = ActiveSheet.ChartObjects.Count

'цикл перебора всех диаграмм

For k = 1 To i
ActiveSheet.ChartObjects(k).Activate
'Действие
Next

End Sub
27102014 вне форума Ответить с цитированием
Старый 17.07.2015, 15:30   #7
zot315
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Если для всех диаграмм одинаковое действие, то можно посчитать количество на листе и выполнить простой цикл
Увы, для диаграмм действия разные(
zot315 вне форума Ответить с цитированием
Старый 17.07.2015, 15:32   #8
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

я тут подумал - если все-таки нужен список имен диаграм, то почему бы и нет?
Код:
Sub Макрос()
i = ActiveSheet.ChartObjects.Count

For k = 1 To i
ActiveSheet.ChartObjects(k).Activate
u = ActiveSheet.ChartObjects(k).Name
MsgBox u

Next

End Sub
27102014 вне форума Ответить с цитированием
Старый 17.07.2015, 15:36   #9
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Цитата:
Сообщение от zot315 Посмотреть сообщение
Увы, для диаграмм действия разные(
Тогда так
Код:
Sub Макрос2()
i = ActiveSheet.ChartObjects.Count

For k = 1 To i
ActiveSheet.ChartObjects(k).Activate
u = ActiveSheet.ChartObjects(k).Name
    Select Case u
    Case Chart1
    'Действие1
    Case Chart2
    'Действие2
    Case Chart3
    'Действие3
    End Select


Next

End Sub
27102014 вне форума Ответить с цитированием
Старый 17.07.2015, 15:43   #10
zot315
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 20
По умолчанию

Да список имен ясен - Диагр.1, Диагр.2, Диагр.3. На каждом листе. Только, например, на одном листе Диагр.1 это имя диаграммы, построеной по данным, напрмер, столбца B, а на другом листе Диагр. 1 это имя диаграммы, построеной по данным другого столбца. Очень надеюсь, что я понятно говорю о проблеме)))
zot315 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить новое поле в уже созданную таблицу средствами делфи sdr1 БД в Delphi 2 26.12.2014 11:50
Как узнать, есть ли в формуле подстрочные цифры средствами VBA? Скрипт Microsoft Office Word 0 11.05.2013 13:19
как изменить значение в уже созданной переменной в базе данных mysql pufystyj PHP 12 22.02.2011 23:55
Изменить номер диаграммы vefer Microsoft Office Excel 3 19.02.2011 07:02
номер созданной строки в StringGrid MAX722 Общие вопросы Delphi 2 24.04.2010 03:42