Vba excel скрыть ряд на диаграмме

Обновлено: 05.07.2024

Диаграмма может представлять собой внедренную диаграмму (содержащуюся в объекте ChartObject) или отдельный лист диаграммы.

Коллекция Charts содержит объект Chart для каждого листа диаграммы в книге. Чтобы вернуть один объект Chart, используйте синтаксис Charts (индекс), где индекс — это номер индекса или имя листа диаграммы.

Номер индекса диаграммы представляет положение листа диаграммы на панели вкладок книги. Charts(1) — это первая (крайняя левая) диаграмма в книге; Charts(Charts.Count) — последняя (самая правая).

Все листы диаграмм включаются в число индексов, даже если они скрыты. Имя листа диаграммы отображается на вкладке книги для диаграммы. Можно использовать свойство Name объекта ChartObject, чтобы установить или вернуть имя диаграммы.

В следующем примере изменяется цвет ряда 1 на листе диаграммы 1.

В следующем примере диаграмма Sales (Продажи) перемещается в конец активной книги.

Объект Chart также является элементом коллекции Sheets, который содержит все листы книги (рабочие листы и листы диаграммы). Чтобы вернуть один лист, используйте синтаксис Sheets (индекс), где индекс — это номер индекса или имя листа.

Если диаграмма является активным объектом, для ссылки на нее можно использовать свойство ActiveChart. Лист диаграммы активен, если пользователь выбрал его или он активирован с помощью метода Activate объекта Chart или метода Activate объекта ChartObject.

В следующем примере активируется лист диаграммы 1, а затем задается тип и заголовок диаграммы.

Внедренная диаграмма активна, если пользователь выбрал ее или объект ChartObject, в котором она находится, активирован с помощью метода Activate.

В следующем примере активируется внедренная диаграмма 1 на листе 1, а затем задается тип и название диаграммы. Обратите внимание, что после активации внедренной диаграммы код в этом примере совпадает с предыдущим примером. С помощью свойства ActiveChart можно написать код на языке Visual Basic, который может ссылаться на внедренную диаграмму или на лист диаграммы (в зависимости от активного объекта).

Если лист диаграммы является активным листом, для ссылки на него можно использовать свойство ActiveSheet. В следующем примере используется метод Activate для активации листа диаграммы Chart1, а затем задается синий цвет для ряда 1 на диаграмме.

События

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Я делаю линейный график (диаграмму) в Excel с несколькими рядами данных, нанесенными на одну диаграмму.

Мне нужно создать решение для макросов / VBA, которое может включать / выключать видимость этих серий нажатием кнопки (или флажка и т. Д.)

Подобно этой картинке (выполняется вручную через систему меню Excel)

enter image description here

Я попытался просмотреть все переменные / методы членов на

Но не очень повезло.

Я пробовал играть с такими битами, как

Но я не могу ни получить объект диаграммы (я получаю ошибку индекса вне диапазона), ни найти какой-либо метод, который позволил бы мне включать / выключать видимость отдельных серий.

3 ответа

Всякий раз, когда я не знаю, как сделать что-то подобное, я включаю регистратор макросов.

У меня была диаграмма с четырьмя сериями, и я использовал функцию фильтра в Excel 2013, чтобы скрыть и отобразить вторую серию, пока работал регистратор макросов.

Вот соответствующий код:

Тип серии (строка или столбец) не имеет значения, это работает для любого из них.

Есть простой способ включить или отключить видимость серии: использовать фильтр для исходных данных. Пусть это поможет вам легко следующим образом. Вы можете вставить новое окно. Установите одно из них на лист исходных данных, а другое окно на лист диаграммы. Затем расположите два окна так, чтобы видеть оба одновременно. Теперь, если вы одновременно отфильтруете понравившуюся серию на листе исходных данных, вы увидите нужную серию на другом листе.

Я считаю, что вы ищете собственность SeriesCollection.Format.Line.Visible . Я быстро создал книгу Excel, добавил простой набор данных (всего 1-10) и добавил линейный график «Диаграмма 2» на лист Sheet1.

Этот код отключил видимость строки:

Точно так же установка для свойства ser.Format.Line.Visible значения msoTrue снова сделала строку видимой.

Что касается получения самой диаграммы, мне пришлось сначала активировать ее, а затем установить для моей переменной cht значение ActiveChart. Чтобы просмотреть имя вашей диаграммы, выберите ее и посмотрите в поле имени (рядом с тем местом, где вы должны ввести значение / формулу ячейки).

Обновить

При использовании описанного выше метода название серии остается в поле легенды. Мне не удалось найти свойство видимости для SeriesCollection в легенде, однако один способ обхода проблемы - просто переименовать серию как пустую строку (это приведет к исчезновению серии из легенды), а затем переименовать серию когда вы хотите это показать.

Этот код ниже будет переключать видимость строки и имени серии в легенде.

Одно из основных применений Excel — это анализ данных. А для анализа данных часто удобно использовать диаграммы с их специальными возможностями, такими, как тренды. На практике задачи по автоматизации создания множества похожих друг на друга диаграмм (обычно на основе информации, полученной из базы данных) возникают очень часто.

С диаграммами в Excel существует некоторая терминологическая путаница. То, что на графическом интерфейсе русского Excel называется диаграммой (меню Вставка -> Диаграмма), по английски называется графиком (Chart) и ему соответствует объект Chart. В объектной модели Excel предусмотрен также и объект Diagram, но он представляет скорее схему отношений (то, что при помощи графического интерфейса русского Excel можно добавить при помощи меню Вставка -> Схематическая диаграмма). Под диаграммой в этом разделе будет пониматься то же, что и у создателей русского Excel — график.

Диаграммы в Excel создаются при помощи объекта Chart.

Лучше всего вначале этот объект объявить:

Dim oChart As Chart

Дальше можно создавать диаграмму. Производится создание диаграммы при помощи много раз использованного нами приема — вызова метода Add() коллекции Charts:

В принципе, диаграмма уже создана, но, поскольку никакие ее свойства не определены, она выглядит просто как пустой лист. Чтобы она обрела содержание, необходимо выполнить еще несколько действий:

Первое (и единственное обязательное действие) — определить источник данных для диаграммы, для чего предназначен метод SetSourceData(). В качестве источника может выступать только объект Range (он передается в качестве первого и единственного обязательного параметра этого метода). Второй параметр (необязательный) определяет, в каком порядке считывать данные — сначала по столбцам или сначала по строкам. Например, в нашем случае это может выглядеть так:

В принципе, если запустить созданный код на выполнение, то диаграмма уже будет создана. Для всех остальных параметров будут приняты значения по умолчанию. Однако на практике нужно определить еще хотя бы тип диаграммы (по умолчанию она будет выглядеть как "обычная гистограмма", то есть ряд из столбиков разной длины). Для этой цели используется свойство ChartType, для которой разработчиками предусмотрено целых 73 значения. Например, чтобы преобразовать диаграмму в обычный график, можно использовать код вида:

Еще одна очень распространенная задача – добавить дополнительные ряды на диаграмму. Для этой цели необходимо создать и получить ссылку на объект Series – ряд, а потом для ряда определить свойство Values (ему передается в качестве значения объект Range):

Dim oSeries As Series

Set oSeries = oChart.SeriesCollection.NewSeries

Пользователи часто говорят, что им необходимо создавать диаграммы не на отдельном листе, а на том же листе, на котором расположены данные. По умолчанию диаграмма создается в оперативной памяти и помещается на отдельный лист. Если нам необходимо поместить ее на уже существующий лист, то в этом случае ее вначале надо создать на отдельном листе, а затем переместить при помощи метода Location. Отдельный лист, созданный для диаграммы, при этом автоматически исчезнет:

oChart.Location xlLocationAsObject, "Лист1"

Обратите внимание, что метод Location принимает в качестве первого параметра одну из констант (xlLocationAsNewSheet – переместить на специально создаваемый новый лист, xlLocationAsObject – переместить на объект, то есть лист), а в качестве второго – не объект листа, как можно было бы подумать, а обязательно его имя. Если код предполагается использовать и в русской, и в английской версии Excel, то предпочтительнее получить имя листа программным образом.

Dim oSeries As Series

Так работать, конечно, намного менее удобно.

Остальные многочисленные параметры диаграммы настраиваются при помощи свойств и методов объектов Chart:

  • свойство ChartArea — это свойство возвращает одноименный объект ChartArea, который представляет собой область, занимаемую диаграммой и используется для настройки внешнего вида диаграммы (свойства Font, Interior и т.п.). Если необходимо настроить внешний вид не всей диаграммы, а той ее части, которая используется непосредственно для вывода графика, используется схожее свойство PlotArea. По умолчанию диаграмма размещается прямо по центру листа. Если необходимо ее переместить в точно определенное место листа, используются знакомые на свойства Top, Height, Left и Width для объекта ChartArea.
  • свойство ChartTitle возвращает одноименный объект, при помощи которого можно настроить заголовок диаграммы (с такими свойствами, как Text, Font, Border и т.п.);
  • ChartType — важнейшее свойство, про которое мы уже говорили. Определяет тип диаграммы;
  • HasDataTable — если установить это свойство в True, то в нижней части диаграммы (по умолчанию) появится таблица с числами, на основе которых была создана диаграмма. Одновременно будет создан программный объект DataTable, при помощи которого можно настроить представление этой таблицы. Схожим образом действуют свойства HasLegend, HasPivotFields и HasTitle.
  • Name — это свойство позволяет настроить имя диаграммы (как название вкладки в Excel). По умолчанию диаграммы называются последовательно "Диаграмма1", "Диаграмма2" и т.п.
  • SizeWithWindow — если поставить значение этого свойства в True (по умолчанию False), то размер диаграммы будет подогнан таким образом, чтобы точно соответствовать размеру листа.
  • Tab — свойство, о котором мало кто подозревает. Оно позволяет настроить при помощи одноименного объекта внешний вид вкладки в книге Excel для диаграммы (или просто листа). Например, чтобы пометить вкладку зеленым, можно воспользоваться кодом

oChart.Tab.Color = RGB(0, 255, 0)

  • Visible — возможность спрятать диаграмму без ее удаления.

Остальные свойства в основном относятся к настройке отображения трехмерных диаграмм и к защите диаграммы от изменения пользователем.

Теперь — о самых главных методах объекта Chart:

Для объекта Chart предусмотрено также события "на все случаи жизни" — реакция на щелчки мышью, на выделение/снятие выделения, активизацию, пересчет данных, изменение размера и т.п., однако используются такие события на практике нечасто.


Скрытие и отображение столбцов в Excel - самая простая задача. И автоматизировать этот процесс даже легко. VBA Hide Column не требует огромного кода для написания. Но прежде чем мы начнем писать код для скрытия столбца в VBA, нам нужно понять несколько вещей и требований. Нам нужно знать имя столбца или последовательность, которую мы хотим скрыть, и диапазон ячейки, которая является необязательной.

Как скрыть столбцы в Excel VBA?

Мы научимся скрывать столбец в VBA с помощью нескольких примеров в Excel.

Вы можете скачать этот шаблон Excel VBA Hide Columns здесь - VBA Скрыть шаблон Excel Columns

Excel VBA Hide Column - Пример № 1

Для этого нам нужны данные в виде нескольких заполненных столбцов. Здесь у нас есть набор данных, в котором мы случайным образом взяли числа от 1 до 40 в разных 4 столбцах A, B, C и D соответственно, и все столбцы окрашены в разные цвета только для лучшего отображения на веб-странице.


Предположим, если мы хотим скрыть столбцы A и B, то сначала нам нужно выбрать оба столбца, как показано ниже.


Теперь щелкните правой кнопкой мыши и выберите « Скрыть», как показано ниже.


Выбранные столбцы будут скрыты после этого. Мы могли видеть только столбцы C и D с данными.


Теперь, если подобная работа может быть выполнена и макросом VBA. Для этого нам понадобится модуль. Перейдите в VBA и выберите модуль из списка меню «Вставка», как показано ниже.


В открывшемся модуле напишите подкатегорию VBA Hide Column, или мы можем выбрать любое другое имя в соответствии с нашим выбором, как показано ниже.

Код:


Сначала выберите столбцы, которые нам нужно скрыть. Здесь мы скрываем столбец C.

Код:


Поскольку мы хотим скрыть весь столбец C, выберите функцию FullColumn, а затем Hidden, как показано ниже.

Код:


Теперь, чтобы это произошло, мы можем выбрать ответ ИСТИНА или ЛОЖЬ. Если мы выберем Hidden как TRUE, тогда это будет скрывающая функция или если FALSE, тогда она будет работать как скрывающая функция. Поскольку мы хотим скрыть выбранные столбцы C из диапазона, мы бы выбрали здесь TRUE.

Код:


Теперь скомпилируйте код и запустите его, нажав кнопку Play, расположенную под строкой меню в VBA. Мы увидим, что столбец C теперь скрыт, теперь он показывает только столбцы A, B и D.

Если мы хотим скрыть более одного столбца вместе. Затем в диапазоне нам нужно выбрать эти столбцы, как показано ниже. Здесь мы выбираем столбцы B и C.

Код:


Теперь снова запустите код.


Здесь мы видим, столбцы B и C теперь скрыты. И только столбцы A и D видны.

Excel VBA Hide Column - Пример № 2

Вместо того, чтобы выбирать столбцы путем упоминания имени, мы также можем скрыть любой столбец по их последовательности. Во многих случаях этот процесс не является предпочтительным, поскольку мы можем легко узнать имя столбца, в котором находится столбец в алфавитном порядке. Этот процесс похож на код, который мы видели в примере № 1, где мы выбрали имя столбца как B и B: C, мы выберем порядковый номер, в котором расположен столбец. Если предположить, что мы хотим скрыть столбец A, используя код примера-1, нам просто нужно поместить порядковый номер, а не выбирать его с помощью Range.

Код:


Теперь запустите этот код, нажав клавишу F5 или нажав кнопку Play. Мы увидим, столбец А, который находится на первой позиции, теперь скрыт.


Excel VBA Hide Column - Пример № 3

Есть еще один способ скрыть столбец, используя код VBA. Это также просто, как код, который мы видели в примере № 1. Для этого мы снова будем использовать те же данные, которые мы использовали в приведенном выше примере. Запишите подкатегорию под любым именем или именем выполняемой функции.

Код:


Выберите любой диапазон столбца, который нам нужно скрыть. Здесь мы выбираем тот же столбец C.

Код:


Чтобы активировать выбор необходимого столбца, выберите функцию « Столбцы», как показано ниже.

Код:


Затем используйте скрытую команду, чтобы активировать функцию скрытия и отображения в VBA.

Код:


И выберите ИСТИНА, чтобы скрыть выбранный столбец, и ЛОЖЬ, чтобы скрыть выбранный скрытый столбец.

Код:


Столбец C, который был нашим столбцом диапазона, теперь скрыт.

Excel VBA Hide Column - Пример № 4

Есть еще один простой способ автоматизировать процесс скрытия столбцов в VBA. Для этого снова напишите подкатегорию в имени VBA Hide Columns.

Код:


Прямо выберите столбец, который нам нужно скрыть. Здесь снова мы выбираем тот же столбец C.

Код:


И выберите скрытую команду как ИСТИНА, чтобы активировать процесс скрытия. Или выберите ЛОЖЬ, чтобы активировать процесс отображения.

Код:


Посмотрим, колонка С снова скрыта.

Плюсы и минусы Excel VBA Скрыть столбец

  • Процесс VBA Hide Column очень прост в реализации.
  • Мы можем скрыть любой тип столбца Range, будь то в последовательности или в случайных позициях.
  • Поскольку процесс VBA Hide Column прост в применении, но в ручном режиме, он также прост, как в коде VBA. Таким образом, это не вносит большой вклад в экономию. Настоятельно рекомендуется только тогда, когда мы работаем над написанием огромного кода.

То, что нужно запомнить

  • Мы скрываем и отображаем столбец с помощью некоторого кода VBA. Для отображения, используйте FALSE вместо TRUE для функциональной цели.
  • Порядковый номер столбца также позволяет скрыть столбец, кроме выбора имени столбца, которое упоминается в алфавитном порядке.

Рекомендуемые статьи

Это руководство к VBA Hide Columns. Здесь мы обсудим, как скрыть столбцы в Excel, используя код VBA, а также приведем практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Читайте также: