Страницы: 1 2 След.
RSS
Определить имя диаграммы, Нужно вывести имя выделенной диаграммы на листе
 
Код
Sub Name_ch()
imya = Application.ActiveChart.Name
Debug.Print imya; " - "; Len(imya) '
n1 = InStr(1, imya, " ") '
imya = Right(imya, Len(imya) - n1)
imya = Chr(34) + imya + Chr(34)
Debug.Print imya
End Sub
Всё перерыл, нигде не нашёл ответа. Суть: на листе несколько диаграмм. Имена могут меняться, т.к. диаграммы периодически добавляются. Написал макрос и, если предварительно выделю диаграмму - макрос, запущенный вручную,через Alt+F8, работает.
Если назначаю этот макрос диаграмме  и затем щёлкаю по ней - error '91' Object variable With  block variable not set.

Обращаюсь к VBA крайне редко, посему  не очень понятна структуризация объектов и их "отношенй"
Буду благодарен за наставление на путь истинный.:))
Изменено: Dis Dis - 05.06.2020 12:45:25
 
Цитата
Dis Dis написал:
imya = Application.ActiveChart.Name
подразумевает что вы выбрали объект (диаграмму) - если вы его не выбрали вам и пашет no set - не выбран
а по вопросу темы непонятно что вы хотите вы итак получаете имя выбранной диаграммы.
что бы в ячейку вывести
Range("C1") = imya
Изменено: Mershik - 05.06.2020 11:26:44
Не бойтесь совершенства. Вам его не достичь.
 
К сожалению, в этом-то и суть вопроса. С выбранной заранее  диаграммой нет проблем, работает. Закрываю макросы, назначаю этот, работающий макрос, выделяю ту таблицу - тут и описанная проблема.
 
Dis Dis, Dis Dis,
Цитата
Dis Dis написал:
выделяю ту таблицу
а причем тут таблица? вы макрос написали для диаграммы (объекта)
Не бойтесь совершенства. Вам его не достичь.
 
Да, конечно, сорри! - ДИАГРАММА. её выделяю, для неё написано. :(
 
Цитата
Dis Dis написал:
Закрываю макросы, назначаю этот, работающий макрос,
что это тогда значит? назначаете на сочетании клавиш или кнопку или событие или в персональной книге макросов??
если что я проверил на клавиши и на кнопку все работает при выборе диаграммы, поэтому Вам бы наверное стоило подробнее описать проблему и видимо с файлом-примером в котором это и не получается
Изменено: Mershik - 05.06.2020 11:33:51
Не бойтесь совершенства. Вам его не достичь.
 
Эта полученная строковая переменная используется далее.  Для дальнейших макросов мне нужно получить имя "щёлкнутой" в обычном режиме диаграммы. Оно получается написанным макросом. Если я предварительно выделяю эту саму диаграмму, захожу в макросы и вручную его запускаю. Если назначаю этот макрос диаграмме, в контекстном меню, в обычном режиме, запускается макрос - и вот такая ошибка.
Для эксперимента написал несколько других макросов. привязываю к объектам - работают. А тут заморочка.
 
Цитата
Диаграмм несколько. Активируя щелчком, без назначения клавиш или дополнительных кнопок, их тогда надо много, под каждую диаграмму. Другие макросы, относительно этой выбранной диаграммы работают. Файл, к сожалению выслать не могу - большой многолистовой, и ещё по некоторым соображениям :(.
Поэкспериментирую ещё, сравню пошагово с идеей назначения кнопки или горячих клавиш. Создам мелкий файлик, перенесу проблему туда, помучаюсь - тогда вышлю.
Спасибо за терпение.
P.S.  Вот на этой строчке затык:    imya = Application.ActiveChart.Name  Переменная imya - глобальная.
Изменено: Dis -S - 06.06.2020 08:51:02
 
Dis Dis, ничего не понятно но очень интересно)
Не бойтесь совершенства. Вам его не достичь.
 
Вот, вытащил проблему в один маленький файлик. Там всё и описано. Должно быть более понятно.
Добавлю, что в варианте с макросом "размеры" - конкретно указано имя диаграммы - Она в данном случае одна.  
Основная идея - сделать это для любой диаграммы на листе, в моём случае их много. Для этого я и пытаюсь выцепить имя файла, чтобы вставив его в макрос размеров  и выполнять масштабирование для любой диаграммы, не зная её имени.

См. вложение.
Изменено: Dis Dis - 05.06.2020 12:42:02
 
Назначьте один макрос на все диаграммы:
Код
Sub qqq()
    MsgBox Application.Caller
End Sub


Цитата
Dis Dis написал:
Файл, к сожалению выслать не могу - большой многолистовой, и ещё по некоторым соображениям
А никому и не нужен Ваш РАБОЧИЙ файл - могли бы и создать новый небольшой с парой диаграмм.
===
И код следует оформлять соответствующим тегом: ищите такую кнопку (смю скрин) и исправьте своё стартовое сообщение
 
Извиняюсь, первый раз на сайте. Разберусь - исправлюсь :)

Цитата
Mershik написал: ничего не понятно но очень интересно)
Не понятно, т.к. я любитель-программист (хотя и радиофизик-электроник) и пишу, в основном для микроконтроллеров. Там языки логичнее :)
Короче - "иностранец" :))
 
Dis Dis, на замечание Вы обратили внимание, а на макрос?
 
Mershik, зачем в этом случае обращение? да еще два раза...
 
Цитата
Юрий М написал:
, а на макрос?
К сожалению, моих знаний не хватает понять как это применить.  Пока отвлёкся -  попозже поразбираюсь.  Исправил ник. Видимо при регистрации так получилось.
Thanks!
 
Цитата
Dis -S написал:
моих знаний не хватает понять как это применить
Правый клик по диаграмме - назначить макрос.
 
Цитата
Dis Dis написал:
Короче - "иностранец"
тут есть возможность на русском обьяснить что хотите получить в итоге
вам покажут как это будет выглядеть на VBA
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
возможность на русском обьяснить
В посте #10 примитивный файлик с проблемой. Ещё раз вкратце задача: на листе, кроме всяких многих данных, математики и ссылок, всяких внутренних макросов для форматирования, занесения  и меню, есть около десятка диаграмм, построенных стандартным образом. Нужно в обычном режиме, возможно даже с защищённым листом, если получится, организовать простое действие: Глянув на диаграмму, а она мелковата для чтения, нужно простым щелчком по области диаграммы вывести её в центр экрана, увеличив при этом до 90% области экрана. Вторым щелчком - вернуть всё на место с тем же масштабом. Вот задача по-русски. Кстати, "иностранец" - это шутка юмора. Имел ввиду, что не пишу на VBA, да и Excel-ем занимаюсь от случая к случаю.  Простые вещи я  всё понимаю, но вот тут уже нужен совет гуру.
Извините за  нудность.:(
 
Dis -S, Вы спрашивали, как узнать имя диаграммы - я показал. Что не так?
 
Цитата
Изменено: Dis -S - 06.06.2020 08:37:24
 
Изменено: Dis -S - 06.06.2020 08:37:49
 
Цитата
Dis -S написал:
И не работает в случае присвоения его этой диаграмме!
покажите этот макрос для присвоеной диаграммы.
т.е. покажите пример где есть указанный как выговорит макрос для конкретной диаграммы и как он работает и как работает объясните...
Изменено: Mershik - 05.06.2020 16:28:31
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Dis -S написал:
Я это не спрашивал.
Цитата
Dis Dis написал:
Определить имя диаграммы,
Как это е спрашивали? А это кто писал?
 
Цитата
Dis -S написал:
Нужно имя этой "щёлкнутой"  диаграммы присвоить строковой переменной
Это тоже не Вы писали?
 
Dis -S, посмотрите набросок, только подправьте масштаб возвращаемого размера - делал на глазок (сугубо для примера).
И вместо коэффициента увеличения/уменьшения можно указывать размеры.
 
Цитата
Excel - файл в посте #10. макросы оба внутри файла. присвоенный "диаграмма_размер()" - работает. "name_ch()" - не работает.  
Изменено: Dis -S - 06.06.2020 08:54:14
 
Dis -S, вернитесь, приведите в порядок сообщение. Цитата - не копия. При цитировании, как ни странно, тоже нужно думать.
 
Цитата
Юрий М написал:
посмотрите набросок,
Спасибо! Теперь всё понятно. Коротко и ясно. Честно говоря, впервые меня на форумах встречают так негостеприимно. 90% замечаний и 1(одно) решение  и объяснение проблемы.
Я уже писал, что VBA - не моё увлечение, рассчитывал на разъяснение для новичков, но получал лишь замечания по форме.
До свидания.
73! То-бишь успехов!
ua4nhj
 
Dis -S,
Цитата
Dis -S написал:
ua4nhj
ради интереса рсшифруйте  ;)  
Не бойтесь совершенства. Вам его не достичь.
 
Это позывной любительской радиостанции.
Страницы: 1 2 След.
Наверх