Всё перерыл, нигде не нашёл ответа. Суть: на листе несколько диаграмм. Имена могут меняться, т.к. диаграммы периодически добавляются. Написал макрос и, если предварительно выделю диаграмму - макрос, запущенный вручную,через Alt+F8, работает. Если назначаю этот макрос диаграмме и затем щёлкаю по ней - error '91' Object variable With block variable not set.
Обращаюсь к VBA крайне редко, посему не очень понятна структуризация объектов и их "отношенй" Буду благодарен за наставление на путь истинный.)
подразумевает что вы выбрали объект (диаграмму) - если вы его не выбрали вам и пашет no set - не выбран а по вопросу темы непонятно что вы хотите вы итак получаете имя выбранной диаграммы. что бы в ячейку вывести Range("C1") = imya
К сожалению, в этом-то и суть вопроса. С выбранной заранее диаграммой нет проблем, работает. Закрываю макросы, назначаю этот, работающий макрос, выделяю ту таблицу - тут и описанная проблема.
что это тогда значит? назначаете на сочетании клавиш или кнопку или событие или в персональной книге макросов?? если что я проверил на клавиши и на кнопку все работает при выборе диаграммы, поэтому Вам бы наверное стоило подробнее описать проблему и видимо с файлом-примером в котором это и не получается
Эта полученная строковая переменная используется далее. Для дальнейших макросов мне нужно получить имя "щёлкнутой" в обычном режиме диаграммы. Оно получается написанным макросом. Если я предварительно выделяю эту саму диаграмму, захожу в макросы и вручную его запускаю. Если назначаю этот макрос диаграмме, в контекстном меню, в обычном режиме, запускается макрос - и вот такая ошибка. Для эксперимента написал несколько других макросов. привязываю к объектам - работают. А тут заморочка.
Диаграмм несколько. Активируя щелчком, без назначения клавиш или дополнительных кнопок, их тогда надо много, под каждую диаграмму. Другие макросы, относительно этой выбранной диаграммы работают. Файл, к сожалению выслать не могу - большой многолистовой, и ещё по некоторым соображениям . Поэкспериментирую ещё, сравню пошагово с идеей назначения кнопки или горячих клавиш. Создам мелкий файлик, перенесу проблему туда, помучаюсь - тогда вышлю. Спасибо за терпение. P.S. Вот на этой строчке затык: imya = Application.ActiveChart.Name Переменная imya - глобальная.
Вот, вытащил проблему в один маленький файлик. Там всё и описано. Должно быть более понятно. Добавлю, что в варианте с макросом "размеры" - конкретно указано имя диаграммы - Она в данном случае одна. Основная идея - сделать это для любой диаграммы на листе, в моём случае их много. Для этого я и пытаюсь выцепить имя файла, чтобы вставив его в макрос размеров и выполнять масштабирование для любой диаграммы, не зная её имени.
Dis Dis написал: Файл, к сожалению выслать не могу - большой многолистовой, и ещё по некоторым соображениям
А никому и не нужен Ваш РАБОЧИЙ файл - могли бы и создать новый небольшой с парой диаграмм. === И код следует оформлять соответствующим тегом: ищите такую кнопку (смю скрин) и исправьте своё стартовое сообщение
Извиняюсь, первый раз на сайте. Разберусь - исправлюсь
Цитата
Mershik написал: ничего не понятно но очень интересно)
Не понятно, т.к. я любитель-программист (хотя и радиофизик-электроник) и пишу, в основном для микроконтроллеров. Там языки логичнее Короче - "иностранец" )
К сожалению, моих знаний не хватает понять как это применить. Пока отвлёкся - попозже поразбираюсь. Исправил ник. Видимо при регистрации так получилось. Thanks!
В посте #10 примитивный файлик с проблемой. Ещё раз вкратце задача: на листе, кроме всяких многих данных, математики и ссылок, всяких внутренних макросов для форматирования, занесения и меню, есть около десятка диаграмм, построенных стандартным образом. Нужно в обычном режиме, возможно даже с защищённым листом, если получится, организовать простое действие: Глянув на диаграмму, а она мелковата для чтения, нужно простым щелчком по области диаграммы вывести её в центр экрана, увеличив при этом до 90% области экрана. Вторым щелчком - вернуть всё на место с тем же масштабом. Вот задача по-русски. Кстати, "иностранец" - это шутка юмора. Имел ввиду, что не пишу на VBA, да и Excel-ем занимаюсь от случая к случаю. Простые вещи я всё понимаю, но вот тут уже нужен совет гуру. Извините за нудность.
Dis -S написал: И не работает в случае присвоения его этой диаграмме!
покажите этот макрос для присвоеной диаграммы. т.е. покажите пример где есть указанный как выговорит макрос для конкретной диаграммы и как он работает и как работает объясните...
Dis -S, посмотрите набросок, только подправьте масштаб возвращаемого размера - делал на глазок (сугубо для примера). И вместо коэффициента увеличения/уменьшения можно указывать размеры.
Спасибо! Теперь всё понятно. Коротко и ясно. Честно говоря, впервые меня на форумах встречают так негостеприимно. 90% замечаний и 1(одно) решение и объяснение проблемы. Я уже писал, что VBA - не моё увлечение, рассчитывал на разъяснение для новичков, но получал лишь замечания по форме. До свидания. 73! То-бишь успехов! ua4nhj