Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ширина области построения диаграммы макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Ширина области построения диаграммы макросом
Lyova Дата: Пятница, 06.09.2024, 21:14 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всем здравствуйте!

Столкнулся с проблемой при создании диаграмм (пример во вложенном файле).
Есть две диаграммы. На одной отражаются продажи продуктов поквартально, а на другой по годам. Обе диаграммы однотипные, как по форматированию, так и по размеру.
Данные для построения диаграммы указываются с помощью макроса, который привязан к выпадающему списку. При выборе в выпадающем списке определенного продукта, макрос выбирает соответствующие данные из таблицы. При этом на диаграммах также отражается сама таблица данных, на основании которых построена диаграмма. Поскольку количество рядов данных может быть разным (в зависимости от выбранной позиции из выпадающего списка), то и высота области построения диаграммы получается разная, что визуально не красиво. Проблему решил указанием в коде на конкретную высоту области построения. НО. Это работает корректно только для одной диаграммы (Диаграмма 1 в файле). С Диаграммой 2 (в которой отражаются данные по годам) почему-то начинает произвольно (на мой взгляд) меняться ширина области построения. Пытался решить проблему указанием в коде на конкретную ширину области построения, но никакого эффекта не дает. Ширина продолжает "гулять" как захочет. В интернете также не нашел какой-то похожей ситуации.

Буду благодарен за помощь, заранее спасибо.
К сообщению приложен файл: primer.xlsb (50.0 Kb)
 
Ответить
СообщениеВсем здравствуйте!

Столкнулся с проблемой при создании диаграмм (пример во вложенном файле).
Есть две диаграммы. На одной отражаются продажи продуктов поквартально, а на другой по годам. Обе диаграммы однотипные, как по форматированию, так и по размеру.
Данные для построения диаграммы указываются с помощью макроса, который привязан к выпадающему списку. При выборе в выпадающем списке определенного продукта, макрос выбирает соответствующие данные из таблицы. При этом на диаграммах также отражается сама таблица данных, на основании которых построена диаграмма. Поскольку количество рядов данных может быть разным (в зависимости от выбранной позиции из выпадающего списка), то и высота области построения диаграммы получается разная, что визуально не красиво. Проблему решил указанием в коде на конкретную высоту области построения. НО. Это работает корректно только для одной диаграммы (Диаграмма 1 в файле). С Диаграммой 2 (в которой отражаются данные по годам) почему-то начинает произвольно (на мой взгляд) меняться ширина области построения. Пытался решить проблему указанием в коде на конкретную ширину области построения, но никакого эффекта не дает. Ширина продолжает "гулять" как захочет. В интернете также не нашел какой-то похожей ситуации.

Буду благодарен за помощь, заранее спасибо.

Автор - Lyova
Дата добавления - 06.09.2024 в 21:14
Lyova Дата: Понедельник, 16.09.2024, 21:14 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Неужели никто не сталкивался с подобной проблемой?
 
Ответить
СообщениеНеужели никто не сталкивался с подобной проблемой?

Автор - Lyova
Дата добавления - 16.09.2024 в 21:14
Hugo Дата: Понедельник, 16.09.2024, 21:49 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Может быть какой-то локальный глюк, я в 365 ничего такого не замечаю, высота устанавливается если её принудительно изменить, ширина произвольно не меняется


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожет быть какой-то локальный глюк, я в 365 ничего такого не замечаю, высота устанавливается если её принудительно изменить, ширина произвольно не меняется

Автор - Hugo
Дата добавления - 16.09.2024 в 21:49
gling Дата: Понедельник, 16.09.2024, 22:18 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2567
Репутация: 709 ±
Замечаний: 0% ±

2010
Здравствуйте.
У меня в 2010 макрос не работает, ругается на строку [vba]
Код
.FullSeriesCollection(5).Select
[/vba] В 2016 всё нормально, после изменения Продукта, размеры диаграмм не изменяются.


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте.
У меня в 2010 макрос не работает, ругается на строку [vba]
Код
.FullSeriesCollection(5).Select
[/vba] В 2016 всё нормально, после изменения Продукта, размеры диаграмм не изменяются.

Автор - gling
Дата добавления - 16.09.2024 в 22:18
Lyova Дата: Вторник, 17.09.2024, 17:41 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
gling, Странно. Попробовал на 2-х разных компьютерах и на ноутбуке. Везде стоит 2016 и везде одинаково, при выборе продукта из списка для диаграммы 2 произвольно меняется ширина области построения диаграммы (именно области построения, а не самой диаграммы). И даже если, например, выбираешь продукт 2 и принудительно задаешь ширину, то если потом выбрать продукт 1 , а затем опять продукт 2, то ширина области построения меняется относительно той, которая задавалась принудительно.
Думал, что может просто с конкретным файлом что-то не так. Создал на другом компе заново клона, но проблема та же.
 
Ответить
Сообщениеgling, Странно. Попробовал на 2-х разных компьютерах и на ноутбуке. Везде стоит 2016 и везде одинаково, при выборе продукта из списка для диаграммы 2 произвольно меняется ширина области построения диаграммы (именно области построения, а не самой диаграммы). И даже если, например, выбираешь продукт 2 и принудительно задаешь ширину, то если потом выбрать продукт 1 , а затем опять продукт 2, то ширина области построения меняется относительно той, которая задавалась принудительно.
Думал, что может просто с конкретным файлом что-то не так. Создал на другом компе заново клона, но проблема та же.

Автор - Lyova
Дата добавления - 17.09.2024 в 17:41
Hugo Дата: Вторник, 17.09.2024, 17:55 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Lyova, вот в 365 записал видео второй диаграммы
К сообщению приложен файл: 5893993.gif (167.1 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеLyova, вот в 365 записал видео второй диаграммы

Автор - Hugo
Дата добавления - 17.09.2024 в 17:55
Lyova Дата: Вторник, 17.09.2024, 21:07 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, Дак она у Вас тоже "гуляет" на видео. Обратите внимание на шкалу ординат - она то совпадает с вертикальной линией, то уходит влево в зависимости от выбранного продукта (продукт 2, 3, 4), значения шкалы ординат смещаются влево. А на диаграмме 1 такого эффекта нет.
 
Ответить
СообщениеHugo, Дак она у Вас тоже "гуляет" на видео. Обратите внимание на шкалу ординат - она то совпадает с вертикальной линией, то уходит влево в зависимости от выбранного продукта (продукт 2, 3, 4), значения шкалы ординат смещаются влево. А на диаграмме 1 такого эффекта нет.

Автор - Lyova
Дата добавления - 17.09.2024 в 21:07
Lyova Дата: Вторник, 17.09.2024, 21:19 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, Я пытался решить это проблему, записав макрорекордером принудительное задание ширины, затем вставил этот код в макрос, который привязан к выпадающему списку, но это не помогло.
 
Ответить
СообщениеHugo, Я пытался решить это проблему, записав макрорекордером принудительное задание ширины, затем вставил этот код в макрос, который привязан к выпадающему списку, но это не помогло.

Автор - Lyova
Дата добавления - 17.09.2024 в 21:19
Hugo Дата: Вторник, 17.09.2024, 21:21 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Но ширина области построения ведь не гуляет, жалоба была на это. Шкала да, чуть плавает если всматриваться.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНо ширина области построения ведь не гуляет, жалоба была на это. Шкала да, чуть плавает если всматриваться.

Автор - Hugo
Дата добавления - 17.09.2024 в 21:21
Hugo Дата: Вторник, 17.09.2024, 21:24 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
аписав макрорекордером принудительное задание ширины, затем вставил этот код в макрос
- не вижу этого в коде. Height это высота.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
аписав макрорекордером принудительное задание ширины, затем вставил этот код в макрос
- не вижу этого в коде. Height это высота.

Автор - Hugo
Дата добавления - 17.09.2024 в 21:24
Hugo Дата: Вторник, 17.09.2024, 21:30 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Может подпись внизу влияет - в первой она всегда одной длины, во второй длина разная.
Уверен что это влияет:


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Вторник, 17.09.2024, 21:32
 
Ответить
СообщениеМожет подпись внизу влияет - в первой она всегда одной длины, во второй длина разная.
Уверен что это влияет:

Автор - Hugo
Дата добавления - 17.09.2024 в 21:30
Lyova Дата: Вторник, 17.09.2024, 21:32 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, Я имел в виду не в приложенном файле, а в другом, когда упражнялся, пытаясь решить проблему. Причем, что интересно, если из кода убрать принудительное задание высоты, то проблема пропадает.


Сообщение отредактировал Lyova - Вторник, 17.09.2024, 21:33
 
Ответить
СообщениеHugo, Я имел в виду не в приложенном файле, а в другом, когда упражнялся, пытаясь решить проблему. Причем, что интересно, если из кода убрать принудительное задание высоты, то проблема пропадает.

Автор - Lyova
Дата добавления - 17.09.2024 в 21:32
Hugo Дата: Вторник, 17.09.2024, 21:36 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Да, сделал эти надписи одной длины и ничего не скачет.
Можно просто пробелами добить.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Вторник, 17.09.2024, 21:38
 
Ответить
СообщениеДа, сделал эти надписи одной длины и ничего не скачет.
Можно просто пробелами добить.

Автор - Hugo
Дата добавления - 17.09.2024 в 21:36
Lyova Дата: Вторник, 17.09.2024, 22:25 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, Да, с пробелами все работает, спасибо огромное! Все гениальное, как говориться, просто.
Еще вопрос, не знаете, как автоматизировать определение длины самого длинного названия в списке "в пробелах". Чтобы, если поменять названия в списке, не вручную длину пробелами каждый раз подгонять.
 
Ответить
СообщениеHugo, Да, с пробелами все работает, спасибо огромное! Все гениальное, как говориться, просто.
Еще вопрос, не знаете, как автоматизировать определение длины самого длинного названия в списке "в пробелах". Чтобы, если поменять названия в списке, не вручную длину пробелами каждый раз подгонять.

Автор - Lyova
Дата добавления - 17.09.2024 в 22:25
Hugo Дата: Вторник, 17.09.2024, 23:04 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Можно в том же макросе который задаёт область данных пробежаться по заголовкам, высчитать макс. длину, добить все до этого значения пробелами.
Можно просто отрезать слева нужное количество символов от сцепки значения с пробелами - одна строка кода. Когда высчитано сколько нужно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожно в том же макросе который задаёт область данных пробежаться по заголовкам, высчитать макс. длину, добить все до этого значения пробелами.
Можно просто отрезать слева нужное количество символов от сцепки значения с пробелами - одна строка кода. Когда высчитано сколько нужно.

Автор - Hugo
Дата добавления - 17.09.2024 в 23:04
Lyova Дата: Среда, 18.09.2024, 00:09 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, В том то и дело, что в каких единицах считать длину. Если в знаках, то 1 буква равна 1 знаку и 1 пробел равен 1 знаку. Но в данном случае, чтобы подогнать визуальную длину пробелами, то вместо одной недостающей буквы нужно ставить 2 пробела (а вместо некоторых букв даже 3 пробела). Например "ПРОДУКТ" - 7 знаков, а чтобы сделать "ПРОДУК" той же длины, то нужно прибавить 2 пробела, т.е. уже будет 8 знаков. Опытным путем определил, что буква "Д" равна трем пробелам.
 
Ответить
СообщениеHugo, В том то и дело, что в каких единицах считать длину. Если в знаках, то 1 буква равна 1 знаку и 1 пробел равен 1 знаку. Но в данном случае, чтобы подогнать визуальную длину пробелами, то вместо одной недостающей буквы нужно ставить 2 пробела (а вместо некоторых букв даже 3 пробела). Например "ПРОДУКТ" - 7 знаков, а чтобы сделать "ПРОДУК" той же длины, то нужно прибавить 2 пробела, т.е. уже будет 8 знаков. Опытным путем определил, что буква "Д" равна трем пробелам.

Автор - Lyova
Дата добавления - 18.09.2024 в 00:09
Hugo Дата: Среда, 18.09.2024, 01:00 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Странно, у меня сработало вручную пробелами, но тот файл я уже удалил.
Сейчас стал делать кодом - пробелы уже не спасают, ни простые, ни неразрывные...
Делал так:
[vba]
Код
    Dim a, i&, mx&
    With Range("AR156:AR160")
    a = .Value
    For i = 1 To UBound(a)
    If mx < Len(a(i, 1)) Then mx = Len(a(i, 1))
    Next
    For i = 1 To UBound(a)
    a(i, 1) = Left(a(i, 1) & String(mx, "_"), mx)
    Next
    .Value = a
    End With
[/vba]
Оставил символ подчёркивания, с ним естественно ОК

P.S. Нужно подобрать устраивающий моноширинный шрифт - тогда и с пробелами ОК


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Среда, 18.09.2024, 01:11
 
Ответить
СообщениеСтранно, у меня сработало вручную пробелами, но тот файл я уже удалил.
Сейчас стал делать кодом - пробелы уже не спасают, ни простые, ни неразрывные...
Делал так:
[vba]
Код
    Dim a, i&, mx&
    With Range("AR156:AR160")
    a = .Value
    For i = 1 To UBound(a)
    If mx < Len(a(i, 1)) Then mx = Len(a(i, 1))
    Next
    For i = 1 To UBound(a)
    a(i, 1) = Left(a(i, 1) & String(mx, "_"), mx)
    Next
    .Value = a
    End With
[/vba]
Оставил символ подчёркивания, с ним естественно ОК

P.S. Нужно подобрать устраивающий моноширинный шрифт - тогда и с пробелами ОК

Автор - Hugo
Дата добавления - 18.09.2024 в 01:00
Lyova Дата: Среда, 18.09.2024, 01:38 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Цитата
Странно, у меня сработало вручную пробелами
Это потому что приравнивается 1 пробел к одному символу и 1 буква к 1 символу. А фактически же может быть от 2 до 3 пробелов на одну букву для визуального выравнивания.
С нижним подчеркиванием, конечно, работает четко, но выглядит не очень.


Сообщение отредактировал Lyova - Среда, 18.09.2024, 01:40
 
Ответить
Сообщение
Цитата
Странно, у меня сработало вручную пробелами
Это потому что приравнивается 1 пробел к одному символу и 1 буква к 1 символу. А фактически же может быть от 2 до 3 пробелов на одну букву для визуального выравнивания.
С нижним подчеркиванием, конечно, работает четко, но выглядит не очень.

Автор - Lyova
Дата добавления - 18.09.2024 в 01:38
Hugo Дата: Среда, 18.09.2024, 08:44 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
C моноширинным шрифтом всё отлично с пробелами


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеC моноширинным шрифтом всё отлично с пробелами

Автор - Hugo
Дата добавления - 18.09.2024 в 08:44
Lyova Дата: Среда, 18.09.2024, 10:19 | Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 183
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Hugo, Что Вы имеете ввиду под "отлично"? Я сейчас попробовал два моноширинных шрифта использовать, Consolas и Courier New. Все то же самое, ширина пробела у них не равна ширине буквы и поэтому пробелов нужно больше.
 
Ответить
СообщениеHugo, Что Вы имеете ввиду под "отлично"? Я сейчас попробовал два моноширинных шрифта использовать, Consolas и Courier New. Все то же самое, ширина пробела у них не равна ширине буквы и поэтому пробелов нужно больше.

Автор - Lyova
Дата добавления - 18.09.2024 в 10:19
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!