Vba excel скрыть ряд на диаграмме
В офисе 2013 есть функция "Фильтр" для работы с диаграммами, в 2010, увы, ее нет. Возможно ли сделать по подобию фишку, чтоб при наведении на какой либо объект (Флажок) указателя мыши - выделить один ряд диаграммы, при наведении на Флаг 2 - выделять ряд 2? Или это из ряда Фантастики? ) (возможно через Private Sub Chart_MouseMove)
В офисе 2013 есть функция "Фильтр" для работы с диаграммами, в 2010, увы, ее нет. Возможно ли сделать по подобию фишку, чтоб при наведении на какой либо объект (Флажок) указателя мыши - выделить один ряд диаграммы, при наведении на Флаг 2 - выделять ряд 2? Или это из ряда Фантастики? ) (возможно через Private Sub Chart_MouseMove) rever27
сделать всегда можно все (ну, или почти все)
По-хорошему, это делается через хук событий окна, но для вас это может быть сложновато, а долго объяснять лень.
Поэтому, если сильно надо, можете извратиться, например, так:
сделать всегда можно все (ну, или почти все)
По-хорошему, это делается через хук событий окна, но для вас это может быть сложновато, а долго объяснять лень.
Поэтому, если сильно надо, можете извратиться, например, так: KSV
сделать всегда можно все (ну, или почти все)
По-хорошему, это делается через хук событий окна, но для вас это может быть сложновато, а долго объяснять лень.
Поэтому, если сильно надо, можете извратиться, например, так: Автор - KSV
Дата добавления - 04.08.2015 в 13:12
rever27, Предлагаю ознакомится с примером и его описанием chart-events-microsoft-excel
Он, правда, на буржуйском. Зато, очень подробный
rever27, Предлагаю ознакомится с примером и его описанием chart-events-microsoft-excel
Он, правда, на буржуйском. Зато, очень подробный miver
KSV, к сожалению ActiveX не работают на листе "Диаграмма"
miver, Интересная статья, спасибо, но про MouseMove там информации нет.
Придется думать дальше
KSV, к сожалению ActiveX не работают на листе "Диаграмма"
miver, Интересная статья, спасибо, но про MouseMove там информации нет.
Придется думать дальше rever27
miver, Разобрался, интересная Тема. Но когда на графике 20 рядов, а идет поиск выделения каждого, то лагает жутко.
Через цикл For поиск каждого квадрата и выделение нужного ряда не запустить. Остается только прописывать каждому ряду свой код выделения?
miver, Разобрался, интересная Тема. Но когда на графике 20 рядов, а идет поиск выделения каждого, то лагает жутко.
Через цикл For поиск каждого квадрата и выделение нужного ряда не запустить. Остается только прописывать каждому ряду свой код выделения? rever27
rever27, Где Ваш файл? Думаю что тормаза из-за большого количества перерисовки. Есть вариантоы решения, но нужно смотреть
rever27, Где Ваш файл? Думаю что тормаза из-за большого количества перерисовки. Есть вариантоы решения, но нужно смотреть miver
miver, Это был долгий вечер мучений, но я добил код, жаль не до идеала.
Вкратце:
1) Вначале ищем область наших "Прямоугольников", которые отвечают каждый за свой ряд. Продолжаем выполнять макрос только, если указатель в данном общем диапазоне
2) После выделения любого ряда(прямоугольника), запоминает вверх и низ активного прямоугольника, и продолжаем выполнение кода только, если указатель покинет эту зону (Ось Х нас уже не интересуют, т.к. предел проверяется в первом пункте)
3) Выполняем цикл перебора всех Рядов Диаграммы, с условием, что если данный ряд не видим, то пропускаем его выделение.
Прикладываю то, что получилось.
Так же в код заложена подсветка активной ячейки при выделении и затемнение остальных. В общем, все функции, что есть в 2013 Екселе. Для тех, кому сердцу дорог 2010 )
miver, KSV. Буду рад, если посмотрите код на предмет улучшения быстродействия. Со своей стороны на 1,5 недели мучений выжал из него все, что мог )
miver, Это был долгий вечер мучений, но я добил код, жаль не до идеала.
Вкратце:
1) Вначале ищем область наших "Прямоугольников", которые отвечают каждый за свой ряд. Продолжаем выполнять макрос только, если указатель в данном общем диапазоне
2) После выделения любого ряда(прямоугольника), запоминает вверх и низ активного прямоугольника, и продолжаем выполнение кода только, если указатель покинет эту зону (Ось Х нас уже не интересуют, т.к. предел проверяется в первом пункте)
3) Выполняем цикл перебора всех Рядов Диаграммы, с условием, что если данный ряд не видим, то пропускаем его выделение.
Прикладываю то, что получилось.
Так же в код заложена подсветка активной ячейки при выделении и затемнение остальных. В общем, все функции, что есть в 2013 Екселе. Для тех, кому сердцу дорог 2010 )
miver, KSV. Буду рад, если посмотрите код на предмет улучшения быстродействия. Со своей стороны на 1,5 недели мучений выжал из него все, что мог ) rever27
Вкратце:
1) Вначале ищем область наших "Прямоугольников", которые отвечают каждый за свой ряд. Продолжаем выполнять макрос только, если указатель в данном общем диапазоне
2) После выделения любого ряда(прямоугольника), запоминает вверх и низ активного прямоугольника, и продолжаем выполнение кода только, если указатель покинет эту зону (Ось Х нас уже не интересуют, т.к. предел проверяется в первом пункте)
3) Выполняем цикл перебора всех Рядов Диаграммы, с условием, что если данный ряд не видим, то пропускаем его выделение.
Прикладываю то, что получилось.
Так же в код заложена подсветка активной ячейки при выделении и затемнение остальных. В общем, все функции, что есть в 2013 Екселе. Для тех, кому сердцу дорог 2010 )
miver, KSV. Буду рад, если посмотрите код на предмет улучшения быстродействия. Со своей стороны на 1,5 недели мучений выжал из него все, что мог ) Автор - rever27
Дата добавления - 06.08.2015 в 00:24
rever27, Убрал постоянные вычисления PointsPerPixel. Тормоза у меня не наблюдается. Так что, даже и не знаю что там можно еще ускорить
rever27, Убрал постоянные вычисления PointsPerPixel. Тормоза у меня не наблюдается. Так что, даже и не знаю что там можно еще ускорить miver
miver, Визуально стало быстрее. Благодарю.
Торможение замечается, если компьютер загружен тяжелыми программами. Поэтому и просматриваю каждую строчку, чтобы убрать лишнее "ЕСЛИ", лишнее действие.
miver, Визуально стало быстрее. Благодарю.
Торможение замечается, если компьютер загружен тяжелыми программами. Поэтому и просматриваю каждую строчку, чтобы убрать лишнее "ЕСЛИ", лишнее действие.
Благодаря выборке в отдельную таблицу постоянно формируется различное количество наименований, по которой построена диаграмма.
А так как количество всегда разное, то возникают пустые значения на диаграмме. Как можно автоматически после выборки, чтобы диаграмма скрывала эту область?
Благодаря выборке в отдельную таблицу постоянно формируется различное количество наименований, по которой построена диаграмма.
А так как количество всегда разное, то возникают пустые значения на диаграмме. Как можно автоматически после выборки, чтобы диаграмма скрывала эту область?
Shambala
Автор - Shambala
Дата добавления - 13.07.2019 в 09:51
Стройте диаграмму на основе "Умной таблицы", при необходимости добавляйте или удаляйте лишние строки. Еще вариант создать сводную таблицу с исключением пустых строк. Будет пример в файле Excel - будут варианты решения.
Стройте диаграмму на основе "Умной таблицы", при необходимости добавляйте или удаляйте лишние строки. Еще вариант создать сводную таблицу с исключением пустых строк. Будет пример в файле Excel - будут варианты решения. gling
gling, файл прикреплён уже в первом посте. Сразу забыла. По одной выборке имён будет сформировано более 40 таблиц с с подтягиванием различных данных. И сформировано более сорока диаграмм для наглядного анализа.
Что-то постоянно добавлять и убирать возможности при таком объёме не будет. Выборка имён будет очень часто меняться и будет меняться все 40 таблиц и диаграмм. Поэтому и вопрос можно ли решить это автоматически?
gling, файл прикреплён уже в первом посте. Сразу забыла. По одной выборке имён будет сформировано более 40 таблиц с с подтягиванием различных данных. И сформировано более сорока диаграмм для наглядного анализа.
Что-то постоянно добавлять и убирать возможности при таком объёме не будет. Выборка имён будет очень часто меняться и будет меняться все 40 таблиц и диаграмм. Поэтому и вопрос можно ли решить это автоматически? Shambala
_Boroda_, Изменила выборку, диаграмма ведет себя идеально! Вопрос решен. Буду сейчас через контрл F3 пытаться делать тоже самое, как это у получилось у вас! Огромное спасибо!
_Boroda_, Изменила выборку, диаграмма ведет себя идеально! Вопрос решен. Буду сейчас через контрл F3 пытаться делать тоже самое, как это у получилось у вас! Огромное спасибо! Shambala
Вариант сводными таблицами. Не всё автоматом, но лучше чем каждый раз в диаграмме менять диапазон, достаточно выбрать нужное в столбце "Наименование". Всё равно же в столбце А прописываете нужный фильтр.
Второй вариант с макросом. Макрос меняет диапазон умной таблицы.
Вариант сводными таблицами. Не всё автоматом, но лучше чем каждый раз в диаграмме менять диапазон, достаточно выбрать нужное в столбце "Наименование". Всё равно же в столбце А прописываете нужный фильтр.
Второй вариант с макросом. Макрос меняет диапазон умной таблицы. gling
Вариант сводными таблицами. Не всё автоматом, но лучше чем каждый раз в диаграмме менять диапазон, достаточно выбрать нужное в столбце "Наименование". Всё равно же в столбце А прописываете нужный фильтр.
Второй вариант с макросом. Макрос меняет диапазон умной таблицы. Автор - gling
Дата добавления - 13.07.2019 в 11:56
_Boroda_, Очень понравился ваш способ решения, через контрл F3 - было сделано тоже самое, что и в вашем примере. Только у Вас все работает идеально, а у меня вообще не реагирует. Формулы прописаны внимательно и более-менее все понятно. В чем может быть ошибка?
_Boroda_, Очень понравился ваш способ решения, через контрл F3 - было сделано тоже самое, что и в вашем примере. Только у Вас все работает идеально, а у меня вообще не реагирует. Формулы прописаны внимательно и более-менее все понятно. В чем может быть ошибка? Shambala
Shambala, кроме F3 еще нужно в каждой диаграмме прописать имена этих диапазонов. Посмотрите ПКМ по диаграмме -- Выбрать данные -- активируйте строку Ряд. -- Изменить. Увидите имя файла в сцепке с именем диапазона, так же нужно прописать и в вашем файле.
Но как понимаю для 40 диаграмм придется создать 160 имен диапазонов и каждый прописать в нужную диаграмму. Возможно я ошибаюсь и есть способ проще.
Shambala, кроме F3 еще нужно в каждой диаграмме прописать имена этих диапазонов. Посмотрите ПКМ по диаграмме -- Выбрать данные -- активируйте строку Ряд. -- Изменить. Увидите имя файла в сцепке с именем диапазона, так же нужно прописать и в вашем файле.
Но как понимаю для 40 диаграмм придется создать 160 имен диапазонов и каждый прописать в нужную диаграмму. Возможно я ошибаюсь и есть способ проще. gling
gling, спасибо за совет! На счёт 40 диаграмм и 160 имен диапазонов - совершенно не страшно, с удовольствием погружусь в работу. Главное результат!
Создала файл пример, сделала всё что вы описали и всё получилось и заработало.
Но когда перехожу к своему рабочему документу то картина следующая см. фото.
Я так понимаю, что ошибка возникает из-за того, что не правильно прописываю имя документа Excel или имя листа? Хотя делаю всё идентично. Стыдно задавать вопрос по такой мелочи, но в быстро созданном документе все работает, а в моём рабочем такая вот картина.
gling, спасибо за совет! На счёт 40 диаграмм и 160 имен диапазонов - совершенно не страшно, с удовольствием погружусь в работу. Главное результат!
Создала файл пример, сделала всё что вы описали и всё получилось и заработало.
Но когда перехожу к своему рабочему документу то картина следующая см. фото.
Я так понимаю, что ошибка возникает из-за того, что не правильно прописываю имя документа Excel или имя листа? Хотя делаю всё идентично. Стыдно задавать вопрос по такой мелочи, но в быстро созданном документе все работает, а в моём рабочем такая вот картина.
Shambala
Создала файл пример, сделала всё что вы описали и всё получилось и заработало.
Но когда перехожу к своему рабочему документу то картина следующая см. фото.
Я так понимаю, что ошибка возникает из-за того, что не правильно прописываю имя документа Excel или имя листа? Хотя делаю всё идентично. Стыдно задавать вопрос по такой мелочи, но в быстро созданном документе все работает, а в моём рабочем такая вот картина.
Автор - Shambala
Дата добавления - 14.07.2019 в 08:40
В картинке не видно что прописано, а при увеличении всё смазывается. Скопируйте текстом формулы в именованом диапазоне, имя диапазона и формулу (ссылку на диапазон) из диаграммы. Или сделайте скрин качественней, или удалите в реальном файле все данные и пришлите его. Диаграмму и формулы в ДиспИмен не удаляйте.
В картинке не видно что прописано, а при увеличении всё смазывается. Скопируйте текстом формулы в именованом диапазоне, имя диапазона и формулу (ссылку на диапазон) из диаграммы. Или сделайте скрин качественней, или удалите в реальном файле все данные и пришлите его. Диаграмму и формулы в ДиспИмен не удаляйте. gling
Необходимо показать-скрыть ряд на Диаграмме с помощью чек-бокса.
Имеем таблицу данных с нужным столбцом:
Хотелось бы при наличии галочки в чек-боксе Ряд показывать, а при отсутствии галочки в чек-боксе - Ряд скрывать.
Попробовал такие варианты:
Private Sub CheckBox1_Click()
ActiveSheet.[Currency_USD_CAD_Spot].Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Range("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Evaluate("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
где
Currency_USD_CAD_Spot - Глобальное имя Диапазона всей таблицы данных. Иными словами взял столбец № 7 из этой таблицы и хотел скрыть/показать на листе самой таблицы. Код подсмотрел у Уокенбаха, но имя диапазона таблицы то у меня Глобальное, и ActiveSheet. наверное и не нужен в коде. Не могу сообразить. Не хватает знаний мат.части. Help кто может!
Необходимо показать-скрыть ряд на Диаграмме с помощью чек-бокса.
Имеем таблицу данных с нужным столбцом:
Хотелось бы при наличии галочки в чек-боксе Ряд показывать, а при отсутствии галочки в чек-боксе - Ряд скрывать.
Попробовал такие варианты:
Private Sub CheckBox1_Click()
ActiveSheet.[Currency_USD_CAD_Spot].Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Range("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Evaluate("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
где
Currency_USD_CAD_Spot - Глобальное имя Диапазона всей таблицы данных. Иными словами взял столбец № 7 из этой таблицы и хотел скрыть/показать на листе самой таблицы. Код подсмотрел у Уокенбаха, но имя диапазона таблицы то у меня Глобальное, и ActiveSheet. наверное и не нужен в коде. Не могу сообразить. Не хватает знаний мат.части. Help кто может! Vostok
Хотелось бы при наличии галочки в чек-боксе Ряд показывать, а при отсутствии галочки в чек-боксе - Ряд скрывать.
Попробовал такие варианты:
Private Sub CheckBox1_Click()
ActiveSheet.[Currency_USD_CAD_Spot].Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Range("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
Private Sub CheckBox1_Click() 'Gold / USD
Evaluate("Currency_USD_CAD_Spot").Columns(7).Hidden = _
Not ActiveSheet.OLEObjects(1).Object.Value
End Sub
где
Currency_USD_CAD_Spot - Глобальное имя Диапазона всей таблицы данных. Иными словами взял столбец № 7 из этой таблицы и хотел скрыть/показать на листе самой таблицы. Код подсмотрел у Уокенбаха, но имя диапазона таблицы то у меня Глобальное, и ActiveSheet. наверное и не нужен в коде. Не могу сообразить. Не хватает знаний мат.части. Help кто может! Автор - Vostok
Дата добавления - 10.02.2015 в 14:34
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If Range("A3") = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Range("A3") = False
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
Range("A3") = True
End If
End Sub
[/vba] Но что-то оно мне как-то не очень нравится. Приходится записывать в ячейку листа либо True либо False, в зависимости от включение-отключения Ряда. Может кто ещё вариант найдёт, пооптимальнее.
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If Range("A3") = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Range("A3") = False
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
Range("A3") = True
End If
End Sub
[/vba] Но что-то оно мне как-то не очень нравится. Приходится записывать в ячейку листа либо True либо False, в зависимости от включение-отключения Ряда. Может кто ещё вариант найдёт, пооптимальнее. Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If Range("A3") = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Range("A3") = False
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
Range("A3") = True
End If
End Sub
[/vba] Но что-то оно мне как-то не очень нравится. Приходится записывать в ячейку листа либо True либо False, в зависимости от включение-отключения Ряда. Может кто ещё вариант найдёт, пооптимальнее. Автор - Vostok
Дата добавления - 10.02.2015 в 15:48
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If CheckBox1.Value = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
End If
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden = CheckBox1.Value
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If CheckBox1.Value = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
End If
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden = CheckBox1.Value
End Sub
Лучше день потерять, потом за пять минут долететь!
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
If CheckBox1.Value = True Then
[Currency_USD_CAD_Spot].Columns(7).Hidden = True
Else
[Currency_USD_CAD_Spot].Columns(7).Hidden = False
End If
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden = CheckBox1.Value
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden=CheckBox1.Value
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden=CheckBox1.Value
End Sub
Private Sub CheckBox1_Click()
Range("A3").Font.Color = RGB(255, 255, 255)
[Currency_USD_CAD_Spot].Columns(7).Hidden=CheckBox1.Value
End Sub
[/vba]
и без всяких ифов
Но это все тот же вариант, просто иначе записан Автор - _Boroda_
Дата добавления - 10.02.2015 в 15:57
Да это и не нужно. У меня же уже всё нарисовано, и Диаграммы, и чек-боксы. Мне Идея была нужна, так сказать - Направление действий.
Вот такое, например:
Это всё что мне было нужно. Хорошее решение. В приведённом то мною примере (от Уокенбаха) всё несколько сложновато и почему то не работает, хотя при первом запуске всё-таки работало. Всем Thanks за Идеи.
Да это и не нужно. У меня же уже всё нарисовано, и Диаграммы, и чек-боксы. Мне Идея была нужна, так сказать - Направление действий.
Вот такое, например:
Это всё что мне было нужно. Хорошее решение. В приведённом то мною примере (от Уокенбаха) всё несколько сложновато и почему то не работает, хотя при первом запуске всё-таки работало. Всем Thanks за Идеи. Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Да это и не нужно. У меня же уже всё нарисовано, и Диаграммы, и чек-боксы. Мне Идея была нужна, так сказать - Направление действий.
Вот такое, например:
Это всё что мне было нужно. Хорошее решение. В приведённом то мною примере (от Уокенбаха) всё несколько сложновато и почему то не работает, хотя при первом запуске всё-таки работало. Всем Thanks за Идеи. Автор - Vostok
Дата добавления - 11.02.2015 в 04:34
Private Sub CheckBox1_Click()
[Currency_USD_CAD_Spot].Columns(7).Hidden = Not CheckBox1.Value
End Sub
[/vba]
Наличие галочки в CheckBox - True - Ряд отображать.
Отсутствие галочки в CheckBox - False - Ряд не отображать.
Private Sub CheckBox1_Click()
[Currency_USD_CAD_Spot].Columns(7).Hidden = Not CheckBox1.Value
End Sub
[/vba]
Наличие галочки в CheckBox - True - Ряд отображать.
Отсутствие галочки в CheckBox - False - Ряд не отображать. Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Private Sub CheckBox1_Click()
[Currency_USD_CAD_Spot].Columns(7).Hidden = Not CheckBox1.Value
End Sub
[/vba]
Наличие галочки в CheckBox - True - Ряд отображать.
Отсутствие галочки в CheckBox - False - Ряд не отображать. Автор - Vostok
Дата добавления - 11.02.2015 в 06:36
Ну, скрывать столбцы - это не всегда такая уж хорошая идея.
А другую чтобы показать - нужно на реальном файле макрос писать. Хотя бы на простеньком. А Вы его не предоставили. Поэтому и получили только правку своего же кода.
А все почему? А потому, что Вам лениво файлик нарисовать.
Ну, скрывать столбцы - это не всегда такая уж хорошая идея.
А другую чтобы показать - нужно на реальном файле макрос писать. Хотя бы на простеньком. А Вы его не предоставили. Поэтому и получили только правку своего же кода.
А все почему? А потому, что Вам лениво файлик нарисовать. _Boroda_
А другую чтобы показать - нужно на реальном файле макрос писать. Хотя бы на простеньком. А Вы его не предоставили. Поэтому и получили только правку своего же кода.
А все почему? А потому, что Вам лениво файлик нарисовать. Автор - _Boroda_
Дата добавления - 11.02.2015 в 07:45
Тут другой вопрос возник в ходе этой же темы. Хочу циклом поставить у чек-боксов листа всем True и не получается подставить цифру через переменную в имя CheckBox:
[vba]
[/vba]
[moder]Вы доиграетесь скоро. Влеплю по замечанию на каждое прошедшее нарушение - как раз 100% наберется.
Какое отношение этот вопрос имеет к теме " Показать/Скрыть ряд на Диаграмме"?
Тема закрыта. Нарушение п.5q Правил форума.
* Жаль, что вариант(ов?) Бороды в этой теме уже не будет.
Тут другой вопрос возник в ходе этой же темы. Хочу циклом поставить у чек-боксов листа всем True и не получается подставить цифру через переменную в имя CheckBox:
[vba]
[/vba]
[moder]Вы доиграетесь скоро. Влеплю по замечанию на каждое прошедшее нарушение - как раз 100% наберется.
Какое отношение этот вопрос имеет к теме " Показать/Скрыть ряд на Диаграмме"?
Тема закрыта. Нарушение п.5q Правил форума.
* Жаль, что вариант(ов?) Бороды в этой теме уже не будет. Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
[/vba]
[moder]Вы доиграетесь скоро. Влеплю по замечанию на каждое прошедшее нарушение - как раз 100% наберется.
Какое отношение этот вопрос имеет к теме " Показать/Скрыть ряд на Диаграмме"?
Тема закрыта. Нарушение п.5q Правил форума.
* Жаль, что вариант(ов?) Бороды в этой теме уже не будет. Автор - Vostok
Дата добавления - 11.02.2015 в 08:02
Я делаю линейный график (диаграмму) в Excel, и несколько строк данных строятся на одной диаграмме.
Мне нужно создать решение макро /VBA, которое может включать/отключать видимость этих серий нажатием кнопки (или галочкой и т.д.)
Подобно этому изображению (вручную выполняется через систему меню excel)
Я попытался просмотреть все членские классы/методы на
но им не повезло.
Я пробовал играть с битами типа
но я не могу получить объект диаграммы (я получаю индекс за пределами диапазона) и не могу найти какой-либо метод, который позволил бы мне включить/отключить видимость отдельных серий.
Я считаю, что свойство, которое вы ищете, является свойством SeriesCollection.Format.Line.Visible . Я быстро создал книгу Excel и добавил простой набор данных (всего 1-10) и добавил линейный график “Диаграмма 2” на лист Sheet1.
Этот код изменил видимость строки:
И аналогично, установка свойства ser.Format.Line.Visible на msoTrue снова сделала видимым изображение.
Что касается получения самой диаграммы, я должен был сначала ее активировать, а затем установить мою переменную cht в ActiveChart. Чтобы просмотреть название диаграммы, выберите его и посмотрите в поле имени (рядом с тем, где вы должны ввести значение ячейки/формулу).
Update
При использовании вышеописанного метода имя серии остается в поле легенды. Я не смог найти свойство видимости для SeriesCollection в легенде, однако одно обходное решение состоит в том, чтобы просто переименовать серию в виде пустой строки (это приведет к исчезновению серии из легенды), а затем переименуйте серию, когда вы хочу показать это.
Этот код ниже переключит видимость названия строки и серии в легенде.
И всякий раз, когда вы используете .Format.Line.Visible = msoTrue , просто не забудьте установить ser.Name обратно на то, что имя для вашей серии.
Всякий раз, когда я не знаю, как это сделать, я включаю макрокорректор.
У меня была диаграмма с четырьмя сериями, и я использовал функцию фильтра в Excel 2013, чтобы скрыть и показать вторую серию, в то время как макро-рекордер работал.
Вот соответствующий код:
Тип серии (строка или столбец) не имеет значения, это работает для любого из них.
Существует простой способ включения и выключения видимости серии: использование фильтра для исходных данных.
Пусть это поможет вам легко следующим образом.
Вы можете вставить новое окно. Измените их в лист данных источника, а другое окно – в лист диаграммы. Затем расположите два окна, чтобы увидеть их одновременно. Теперь, если вы фильтруете серию, которая вам нравится в листе данных источника, вы увидите серию, которая вам нужна на другом листе.
Я делаю линейный график (диаграмму) в Excel с несколькими рядами данных, нанесенными на одну диаграмму.
Мне нужно создать решение для макросов / VBA, которое может включать / выключать видимость этих серий нажатием кнопки (или флажка и т. Д.)
Подобно этой картинке (выполняется вручную через систему меню Excel)
Я попытался просмотреть все переменные / методы членов на
Но не очень повезло.
Я пробовал играть с такими битами, как
Но я не могу ни получить объект диаграммы (я получаю ошибку индекса вне диапазона), ни найти какой-либо метод, который позволил бы мне включать / выключать видимость отдельных серий.
3 ответа
Всякий раз, когда я не знаю, как сделать что-то подобное, я включаю регистратор макросов.
У меня была диаграмма с четырьмя сериями, и я использовал функцию фильтра в Excel 2013, чтобы скрыть и отобразить вторую серию, пока работал регистратор макросов.
Вот соответствующий код:
Тип серии (строка или столбец) не имеет значения, это работает для любого из них.
Есть простой способ включить или отключить видимость серии: использовать фильтр для исходных данных. Пусть это поможет вам легко следующим образом. Вы можете вставить новое окно. Установите одно из них на лист исходных данных, а другое окно на лист диаграммы. Затем расположите два окна так, чтобы видеть оба одновременно. Теперь, если вы одновременно отфильтруете понравившуюся серию на листе исходных данных, вы увидите нужную серию на другом листе.
Я считаю, что вы ищете собственность SeriesCollection.Format.Line.Visible . Я быстро создал книгу Excel, добавил простой набор данных (всего 1-10) и добавил линейный график «Диаграмма 2» на лист Sheet1.
Этот код отключил видимость строки:
Точно так же установка для свойства ser.Format.Line.Visible значения msoTrue снова сделала строку видимой.
Что касается получения самой диаграммы, мне пришлось сначала активировать ее, а затем установить для моей переменной cht значение ActiveChart. Чтобы просмотреть имя вашей диаграммы, выберите ее и посмотрите в поле имени (рядом с тем местом, где вы должны ввести значение / формулу ячейки).
Обновить
При использовании описанного выше метода название серии остается в поле легенды. Мне не удалось найти свойство видимости для SeriesCollection в легенде, однако один способ обхода проблемы - просто переименовать серию как пустую строку (это приведет к исчезновению серии из легенды), а затем переименовать серию когда вы хотите это показать.
Этот код ниже будет переключать видимость строки и имени серии в легенде.
И всякий раз, когда вы используете .Format.Line.Visible = msoTrue , просто не забудьте установить для ser.Name любое название вашей серии.
Читайте также: