Excel vba подсказки к toolbar (excel’95)


Содержание

Excel vba подсказки к toolbar (excel’95)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function MySum(ByVal A As Range) As Double
MySum = WorksheetFunction.Sum(A)
End Function

Public Sub DescriptForMySum()
Application.MacroOptions «MySum», Description:=»Моя функция», ArgumentDescriptions:=Array(«А — диапазон»)
End Sub

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function MySum(ByVal A As Range) As Double
MySum = WorksheetFunction.Sum(A)
End Function

Public Sub DescriptForMySum()
Application.MacroOptions «MySum», Description:=»Моя функция», ArgumentDescriptions:=Array(«А — диапазон»)
End Sub

ЯД: 410013299366744 WM: R193491431804

Ответить

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function MySum(ByVal A As Range) As Double
MySum = WorksheetFunction.Sum(A)
End Function

Public Sub DescriptForMySum()
Application.MacroOptions «MySum», Description:=»Моя функция», ArgumentDescriptions:=Array(«А — диапазон»)
End Sub

Rioran Дата: Четверг, 26.02.2015, 16:51 | Сообщение № 3

Manyasha, классный приём, но согласно документации был введён с 2010-й версии эксель, а у спрашивающего 2007-я. Возможно, работать не будет, ждём проверки пользователем =)

UPD_01: Если начать вводить в ячейку свою функцию и на этапе =MySum( нажать сочетание Контрол + Шифт + англ. А то нам автоматически заполнится строка. Если мы адекватно назвали переменные — мы всё поймём.

UPD_02: Как вариант, можно для каждой функции сделать дубль, добавив в конце названия «Help». Тогда, если забыл как работает твой механизм — введи в соседнюю ячейку эту же функцию без аргументов. Например:

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function Rio_Action(intX As Integer, strX As String) As String
If CStr(intX) = strX Then Rio_Action = «Сходится» Else Rio_Action = «Не сходится»
End Function

Public Function Rio_Action_Help() As String
Rio_Action_Help = «Функция проверяет численное равенство аргументов: 1-й аргумент integer-число, 2-й аргумент текстовый.»
End Function

Manyasha, классный приём, но согласно документации был введён с 2010-й версии эксель, а у спрашивающего 2007-я. Возможно, работать не будет, ждём проверки пользователем =)

UPD_01: Если начать вводить в ячейку свою функцию и на этапе =MySum( нажать сочетание Контрол + Шифт + англ. А то нам автоматически заполнится строка. Если мы адекватно назвали переменные — мы всё поймём.

UPD_02: Как вариант, можно для каждой функции сделать дубль, добавив в конце названия «Help». Тогда, если забыл как работает твой механизм — введи в соседнюю ячейку эту же функцию без аргументов. Например:

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function Rio_Action(intX As Integer, strX As String) As String
If CStr(intX) = strX Then Rio_Action = «Сходится» Else Rio_Action = «Не сходится»
End Function

Public Function Rio_Action_Help() As String
Rio_Action_Help = «Функция проверяет численное равенство аргументов: 1-й аргумент integer-число, 2-й аргумент текстовый.»
End Function

Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение Manyasha, классный приём, но согласно документации был введён с 2010-й версии эксель, а у спрашивающего 2007-я. Возможно, работать не будет, ждём проверки пользователем =)

UPD_01: Если начать вводить в ячейку свою функцию и на этапе =MySum( нажать сочетание Контрол + Шифт + англ. А то нам автоматически заполнится строка. Если мы адекватно назвали переменные — мы всё поймём.

UPD_02: Как вариант, можно для каждой функции сделать дубль, добавив в конце названия «Help». Тогда, если забыл как работает твой механизм — введи в соседнюю ячейку эту же функцию без аргументов. Например:

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Public Function Rio_Action(intX As Integer, strX As String) As String
If CStr(intX) = strX Then Rio_Action = «Сходится» Else Rio_Action = «Не сходится»
End Function

Public Function Rio_Action_Help() As String
Rio_Action_Help = «Функция проверяет численное равенство аргументов: 1-й аргумент integer-число, 2-й аргумент текстовый.»
End Function

Hugo Дата: Четверг, 26.02.2015, 17:04 | Сообщение № 4

Нашёл в закромах (с кибера с 2011 года):

Для того, чтобы работало, нужно формулу вызвать один раз из диспетчера формул, т.е Fx нажать и выбрать формулу из своей категории, потом можно вводить в самой ячейке(=ЗАПАС(Арг1,Арг2))

В 2010 можно сделать
Для восстановления исторической справедливости замечу, что этот метод работает в Excel 97, а может, и в более ранних

Нашёл в закромах (с кибера с 2011 года):

Для того, чтобы работало, нужно формулу вызвать один раз из диспетчера формул, т.е Fx нажать и выбрать формулу из своей категории, потом можно вводить в самой ячейке(=ЗАПАС(Арг1,Арг2))

В 2010 можно сделать
Для восстановления исторической справедливости замечу, что этот метод работает в Excel 97, а может, и в более ранних Hugo

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

Сообщение Нашёл в закромах (с кибера с 2011 года):

Для того, чтобы работало, нужно формулу вызвать один раз из диспетчера формул, т.е Fx нажать и выбрать формулу из своей категории, потом можно вводить в самой ячейке(=ЗАПАС(Арг1,Арг2))

В 2010 можно сделать
Для восстановления исторической справедливости замечу, что этот метод работает в Excel 97, а может, и в более ранних Автор — Hugo
Дата добавления — 26.02.2015 в 17:04

Hugo Дата: Четверг, 26.02.2015, 17:28 | Сообщение № 5

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

sttt Дата: Четверг, 26.02.2015, 18:24 | Сообщение № 6
Hugo Дата: Четверг, 26.02.2015, 23:09 | Сообщение № 7

Заработало, но полностью только в 2010:

Пояснения «из закромов» не работают — нужно выполнить макрос, и тогда всё работает.
Но чтоб всегда было описание аргументов — нужно при каждом старте приложения выполнять этот макрос.

Заработало, но полностью только в 2010:

Пояснения «из закромов» не работают — нужно выполнить макрос, и тогда всё работает.
Но чтоб всегда было описание аргументов — нужно при каждом старте приложения выполнять этот макрос. Hugo

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Сообщение Заработало, но полностью только в 2010:

Пояснения «из закромов» не работают — нужно выполнить макрос, и тогда всё работает.
Но чтоб всегда было описание аргументов — нужно при каждом старте приложения выполнять этот макрос. Автор — Hugo
Дата добавления — 26.02.2015 в 23:09

Manyasha Дата: Пятница, 27.02.2015, 07:54 | Сообщение № 8

ЯД: 410013299366744 WM: R193491431804

Ответить

Hugo Дата: Пятница, 27.02.2015, 12:39 | Сообщение № 9

Если у меня например пара десятков своих функций — это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать — маловато инфы в мастере видно.
Гемор.
Я сделал иначе — все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке).
Т.е. некий свой мастер по выбору функции, со своим функционалом.
И работает в любой версии.
Файл не кину —
1. сейчас не могу
2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально

Так что только дарю идею.

Если у меня например пара десятков своих функций — это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать — маловато инфы в мастере видно.
Гемор.
Я сделал иначе — все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке).
Т.е. некий свой мастер по выбору функции, со своим функционалом.
И работает в любой версии.
Файл не кину —
1. сейчас не могу
2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально

Так что только дарю идею. Hugo

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

Сообщение Если у меня например пара десятков своих функций — это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать — маловато инфы в мастере видно.
Гемор.
Я сделал иначе — все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке).
Т.е. некий свой мастер по выбору функции, со своим функционалом.
И работает в любой версии.
Файл не кину —
1. сейчас не могу
2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально

Так что только дарю идею. Автор — Hugo
Дата добавления — 27.02.2015 в 12:39


Excel это не сложно

Основные форумы => Вопросы по Excel и VBA => Тема начата: Valetnina от 21.01.2020, 17:22:40

Название: всплывающие подсказки кнопок команд на ленте Excel написать в VBA
Отправлено: Valetnina от 21.01.2020, 17:22:40

Честно ищу с самого утра в интернете как менять текст всплывающих подсказок к пользовательским кнопкам на панели управления Excel. Известно, как это делать с помощью XML + VBA (getscreentip в XML + пишем желаемый текст подсказки в аргумент переменной Screentip в VBA). Но задача сделать это БЕЗ xml, то есть только силами VBA (все созданные мной кнопки — на вкладке Надстройки / AddIns).

Возможно ли такое и если да, то как ?

controltiptext, tooltiptext, кружу вокруг да около, но результат пока нулевой.
Нашла одну интересную статью с сайта excel-VBA.ru (http://www.excel-vba.ru/chto-umeet-excel/kak-sozdat-svoyu-nadstrojku/), где к этому вопросу подходят оооочень близко, но действия согласно с ней пока не принесли успеха в моём конкретном случае.

Спасибо за предложенный Вами код, пытаюсь увидеть, как он работает, в файле (прилагаю к сообщению)..

Я в программировании новичок, поэтому задаю такие могущие показаться примитивными вопросы. Но я очень стараюсь :).

Я вижу, что Ваш код состоит из функции и операции вызова.

Должна ли я что-то добавить до или после самой функции и строчек для вызова Вашего кода, чтобы он «скомпилировался» ?

Если ввожу его в таком виде, как в Вашем сообщении, VBA выдает ошибку компиляции «тип, заданный пользователем, не определен» и выделяет мне вот эти строки:

VBA Excel: примеры программ. Макросы в Excel

Немногие знают, что первая версия популярного продукта Microsoft Excel появилась в 1985 году. С тех пор он пережил несколько модификаций и востребован у миллионов пользователей по всему миру. При этом многие работают лишь с малой толикой возможностей этого табличного процессора и даже не догадываются, как им могло бы облегчить жизнь умение программирования в Excel.

Что такое VBA

Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.

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

Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.

Объекты, коллекции, свойства и методы

Именно с этими понятиями нужно разобраться тем, кто собирается работать в среде VBA. Прежде всего необходимо понять, что такое объект. В Excel в этом качестве выступают лист, книга, ячейка и диапазон. Данные объекты обладают специальной иерархией, т.е. подчиняются друг другу.

Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.

Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.

Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.

Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.

Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.

Как начать

Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».

Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:

  • в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
  • выбирают команду Mudule;
  • сохраняют, нажав на иконку с изображением floppy disk;
  • пишут, скажем так, набросок кода.

Он выглядит следующим образом:

Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.

Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.

Макросы в Excel

За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.

Пример 1

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

  • открывают вкладку «Вид»;
  • переходят на пиктограмму «Макросы»;
  • жмут на «Запись макроса»;
  • заполняют открывшуюся форму.

Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.

Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.

  • вновь переходят на строку «Макросы»;
  • в списке выбирают «Макрос 1»;
  • нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).

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

Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.

Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.

Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.

Пример 2

Циклы VBA помогают создавать различные макросы в Excel.

Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x 2 + 3x 3 – cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.

За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.

Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:

Do While x1 0 Then Cells(1, 1).Value = 1

Редактор Visual Basic в Excel

В этой главе даётся очень краткий обзор редактора Visual Basic в Excel. Если Вы любознательный читатель и хотите узнать еще больше информации о редакторе, то при желании без проблем найдете ресурсы с более подробным описанием.

Запуск редактора Visual Basic

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.

Окна редактора Visual Basic


В процессе работы в редакторе Visual Basic в Excel могут быть открыты различные окна. Управление окнами осуществляется в меню View, которое находится в верхней части окна редактора VBA. Ниже дано описание отдельных окон.

Окно проекта (Project)

Окно Project открывается в левой части редактора VBA (показано на картинке выше). В этом окне для каждой открытой рабочей книги создаётся проект VBA (VBA Project). Проект VBA – это набор всех объектов и модулей VBA, привязанных к текущей книге. Изначально в него входят:

  • Объект ЭтаКнига (ThisWorkbook), привязанный к книге Excel;
  • Объекты Лист (Sheet), привязанные к каждому листу текущей рабочей книги Excel.

Самостоятельно в проект можно добавить объекты Userform, Module и Class Module. Если Вы посмотрите на картинку выше, то увидите, что в проект VBA для книги Book1.xlsm добавлен объект Module с названием Module1.

Вот как можно создать новый объект Userform, Module или Class Module:

  • В окне Project выберите рабочую книгу, в которую нужно добавить объект, и кликните по ней правой кнопкой мыши.
  • В появившемся меню кликните Insert и в раскрывшемся меню выберите Userform, Module или Class Module.

Для каждого из описанных выше объектов предусмотрено специальное окно, в котором будет создаваться и храниться новый код VBA. Порядок при этом такой:

  • Код, который относится к рабочей книге, должен быть введён в соответствующий объект ЭтаКнига (ThisWorkbook);
  • Код, который относится к рабочему листу, должен быть введён в соответствующий объект Лист (Sheet);
  • Код более общего характера должен быть введён в Module;
  • Код для нового объекта должен быть введён в Class Module;
  • Если нужно создать диалоговое окно для взаимодействия с пользователем, то можно использовать Userform.

Окно кода (Code)

Двойной щелчок мышью по любому объекту в окне Project открывает соответствующее окно Code, предназначенное для ввода кода VBA с клавиатуры. На одном из приведённых выше рисунков показано окно кода для Module1.

По мере ввода кода VBA в окно Code, редактор Visual Basic следит за правильностью ввода, ищет ошибки в коде и выделяет код, который требует исправления.

Окно свойств (Properties)

В окне Properties перечислены свойства объекта, который в момент создания (не в процессе выполнения программы) выделен в окне проекта. Эти свойства могут быть различными в зависимости от типа выделенного объекта (лист, книга, модуль и другие).

Окно отладчика (Immediate)

Окно Immediate можно отобразить в редакторе Visual Basic через меню View > Immediate Window или нажатием комбинации клавиш Ctrl+G. Это окно помогает при отладке кода. Оно выполняет роль области вывода для отладки выражений и позволяет вычислять отдельные выражения или выполнять строки кода по одной.

Например, введите выражение “?j” и нажмите Enter – в результате будет выведено текущее значение переменной j.

Окно переменных (Locals)

Чтобы открыть окно Locals, нажмите Locals Window в меню View редактора Visual Basic. В этом окне отображаются все переменные, объявленные в текущей процедуре. Окно делится на столбцы, в которых содержатся имя, значение и тип каждой переменной, и эта информация обновляется автоматически в ходе выполнения программы. Окно Locals очень полезно при отладке кода VBA.

Окно отслеживания (Watches)

Окно Watches также очень помогает при отладке кода VBA, так как в нём можно увидеть значение, тип и контекст любого отслеживаемого выражения, которое задаст пользователь. Чтобы открыть окно Watches, нажмите Watch Window в меню View редактора Visual Basic. Также окно Watches будет открыто автоматически, если задать отслеживаемое выражение.

Чтобы задать отслеживаемое выражение, нужно:

  1. Выделить выражение в редактируемом коде VBA.
  2. В меню Debug редактора VBA нажать Quick Watch.
  3. Нажать Add.

Кроме рассмотренных, в меню редактора Visual Basic в Excel существует ещё множество параметров и команд, используемых при создании, выполнении и отладке кода VBA.

Как можно использовать специальные всплывающие подсказки с картами Excel с помощью vba?

Я ищу для создания пользовательских всплывающих окон на диаграмме с помощью vba.

Подобно этому, кроме instad из «Value: 6», отобразите соответствующий комментарий. «Да»

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

Есть ли способ отслеживания кода excel vba, чтобы узнать, что он делает? Или, есть ли более простой способ создания пользовательских всплывающих подсказок с графиками Excel?

Создание диаграммы (как новый лист, а не встроенная диаграмма) и редактирование кода VBA для листа:

Это создало текстовое поле, когда движение мыши было над элементом «xlSeries».

Excel vba подсказки к toolbar (excel’95)

На сегодняшний день надстройка Excel содержит более 80 пользовательских функций, и более 25 макросов. Мы стараемся учитывать ваши пожелания и выпускаем обновления с новым функционалом и улучшениями. Все обновления проходят автоматически в пару кликов, быстро и удобно.

После установки надстройки на ленту Excel добавится новая вкладка — VBA-Excel. Вид данной вкладки зависит от вашей версии программы. В Excel 2013 она выглядит следующим образом:

Надстройка VBA-Excel

Сравнить диапазоны

Быстро сопоставьте данные двух таблиц. Найдите ячейки из первой таблице, которые присутствуют во второй. Найдите совпадающие данные. Объедините две таблицы исключив дубликаты.

Стрелки зависимостей

В чужих файлах особенно тяжело разобраться как получено то или иное значение. Для наглядности можно использовать стрелки, показывающие какие данные используются. Надстройка позволяет включать такие стрелки для всех формул на активном листе.

Вставить строки

Аналогично поможет вставить большое количество строк

Вставить столбцы

Быстро вставить большое количество столбцов

Поменять местами строки

Меняет два выделенных диапазона строк местами.

Поменять местами столбцы

Аналогично меняет столбцы местами.

Удалить пустые строки или столбцы

Удаляет все строки или столбцы на листе, которые не содержат данных.

Скрыть пустые строки или столбцы

Макрос скрывает пустые строки или столбцы без данных

Вставить значения

Заменить формулы их значениями в указанном диапазоне, на одном или нескольких листах, во всей книге


Разорвать связи

Разрывает связи с другими книгами и заменяет формулы, ссылающиеся на другие книги, на значения.

Объединить сохранив текст

В отличие от стандартной функции сохраняет значения всех ячеек при объединении.

Уникальные

Подсветка уникальных значений и/или вывод их в отдельный диапазон.

Закрепить ячейки

Закрепление строки/столбца или ячейки в формулах всего выделенного диапазона.

Текст формулы в комментарий

Макрос для быстрой записи текста формулы в комментарии к ячейке

Обновить все связи

Принудительное обновление всех связей в книге для пересчета формул и актуализации данных.

Собрать комментарии

Макрос собирает комментарии со всех листов на отдельный лист

Поменять местами ячейки

Позволяет поменять местами два выделенных диапазона в одно действие

Заполнить пустые ячейки

Заполняет пустые ячейки значениями верхних или левых непустых ячеек

Цветовая карта ячеек

Макрос наглядно позволяет определить тип данных в ячейках. Моментально увидеть какое число сохранено как текст, или дана как число.

Диспетчер листов

Диспетчер помогает быстро перемещаться по листам, выполнять различные операции с ними (удалять, скрывать, сортировать и многое другое).

Координатное выделение строки и столбца

Наглядное выделение текущей строки и столбца при работе с большими таблицами.

Стиль ссылок

Быстрое переключение между ссылками вида A1 и R1C1.

Сортировка листов

Макрос позволит отсортировать листы по возрастанию, убыванию или по цвету.

Скриншот области

Выделите диапазон ячеек и сохраните его как рисунок (например, для отправки по почте).

Создание оглавления книги

Помогает быстро создать лист Оглавление с перечнем всех листов книги и ссылками на них.

Регистр

Функция для быстрого изменения регистра букв в Excel.

Диспетчер имен

Макрос позволит удалить именованные диапазоны в книге в том числе и скрытые

Диспетчер стилей

Можно быстро удалить все пользовательские и встроенные стили в книге

Объединить листы в один

Макрос для сбора данных с одного или нескольких листов

Копирование листов n раз

Необходим для того чтобы массово размножить листы в книге

Как создать листы из диапазона

Данная функция позволяет создавать листы с нужным названием из указанного диапазона

Как вывести список листов

Вы можете вывести в указанную ячейку список всех листов книги.

Как массово переименовать листы книги

Функция позволяет переименовывать все листы книги за один раз, а не поштучно как в стандартном функционале

Как удалить пустые листы

Если в вашем файле образовалось много пустых листов, которые долго удалять вручную, то удалить их можно с помощью макроса

Удаление пробелов в выделенном диапазоне

Функция позволяет удалить лишние пробелы в указанном диапазоне ячеек

Выбор даты из календаря

Функция позволяет удалить лишние пробелы в указанном диапазоне ячеек

Отображение ярлыков листов

Макрос для быстрого отображение или скрытия ярлычков листов

Диспетчер открытых книг


Менеджер книг призван облегчить работу с большим количеством открытых книг.

Сохранить выбранные книги

Помогает разово сохранить все открытые книги Excel

Изменить видимость листов

Удобное скрытие и отображение листов книги, а также возможность сделать лист супер скрытым.

Удалить картинки на листе

Функционал позволяет удалить все картинки с выбранного листа

Резервное копирование

Быстро создайте резервную копию файла с указанием даты и времени сохранения. При этом не нужно переименовывать текущий файл в котором работаете.

Текущая папка

Не тратьте время на поиск файла, откройте папку в которой он расположен.

Сохранить листы

Сохраните выбранные листы как отдельные книги Excel

Защита листов

Установите защиту сразу на несколько листов книги.

Импортировать листы

Скопируйте листы из закрытых книг в текущую. Можно импортировать листы как из одной, так и из нескольких книг.

Скопировать ссылку на файл

Копируйте ссылку на текущий файл Excel в буфер обмена.

Сумма прописью (СУММАПРОПИСЬЮ)

Запись любого числа прописью в различных падежах.

ПЕРЕВОД

Перевод с любого языка на любой язык с помощью сервиса Яндекс.Перевод.

СКЛОНЕНИЕ

Склонение существительных и ФИО по падежам

СЦЕПИТЬДИАПАЗОН

Объединяет непустые ячейки указанного диапазона.

ЧИСЛОИЗСТРОКИ

Извлечь из строки все найденные числа.

ТЕКСТИЗСТРОКИ

Извлечь из строки только текст игнорируя числа.

Определение пола по имени в Excel

ПОЧТАИЗСТРОКИ

Поможет извлечь почту из любой части строки.

ПОДСТРОКА

Извлекает подстроку текста, разделенного символом-разделителем (Пример: =ПОДСТРОКА(«Мама мыла раму»;» «;1) вернет «Мама»).

СЧЁТСИМВЛ

Подсчитывает количество заданных символов в строке.

ТЕКСТКАК

Возвращает ИСТИНА если указанный текст соответствует шаблону.

УБРАТЬСЛУЧЛАТИН

Функция помогает убрать случайно введенный текст латиницей.

ПРОИЗНЕСТИ

Функция позволяет проговорить введенный текст в ячейку Excel. Предупредить об изменении результата в расчете и т.п.

ТРАНСЛИТ

Выполнение транслитерации текста.

ЕЛАТИН

Проверяет наличие латиницы в тексте.

ЕКИРИЛЛ

Проверяет наличие кириллицы в тексте.

ИЗВЛЕЧЬЛАТИНИЦУ

Извлекает из текста слова на латинице.

ИЗВЛЕЧЬКИРИЛЛИЦУ

Текст, из которого необходимо извлечь слова, написанные кириллицей.

ЕПОЧТА

Проверяет корректность email адреса.

ИНВЕРСИЯ


Выполняет инверсию текста.

НАЧАЛОСТРОКИ

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

КОНЕЦСТРОКИ

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

ТЕКСТИЗURL

Выполняет импорт текста из интернет страницы в Excel.

ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО

Функции для удобной работы с фамилией, именем и отчеством помогут разделить ячейку с ФИО на части

УБРАТЬСЛУЧКИРИЛ

Функция помогает убрать случайно введенный текст на русской раскладке.

ПРЕДМЕТПРОПИСЬЮ

Функция ПРЕДМЕТПРОПИСЬЮ позволит указать прописью любой тип данных будь то штуки, дни, рубли, тоны, километры и так далее.

ЕФОРМУЛА

Возвращает ИСТИНА если ячейка содержит формулу.

ЕЖИРНЫЙ

Возвращает ИСТИНА если текст ячейки написан жирным шрифтом.

ЕКУРСИВ

Возвращает ИСТИНА если текст ячейки написан курсивом.

ЕДАТА

Возвращает ИСТИНА если ячейка содержит дату.

ЕПОДЧЕРКН

Возвращает ИСТИНА если текст в ячейке подчеркнут.

ФАЙЛСУЩ

Проверяет наличие файла по заданному пути и возвращает ИСТИНА если указанный файл существует.

ПАПКАСУЩ

Проверяет наличие директории по заданному пути и возвращает ИСТИНА если указанная папка существует.

ЛИСТСУЩ

Проверяет существование листа и возвращает ИСТИНА если указанный лист существует в активной книге и ЛОЖЬ если такого листа нет.

КНИГАОТКРЫТА

Проверяет открыта ли книга Excel и возвращает ИСТИНА указанный файл открыт и ЛОЖЬ в противном случае.

ФАЙЛРАСШИР

Определяет расширение файла по пути к нему

Вставка курса любой валюты на любую дату прямо с сайта Центробанка РФ (cbr.ru).

КУРСПЕРИОД

Вставка среднего курса валюты за любой период прямо с сайта Центробанка РФ (cbr.ru).

Формула для быстрого расчета суммы с НДС или же размера НДС.

ДЕНЬНЕДТ

Выводит день недели текстом (понедельник, вторник и т.д.)

СЕГОДНЯСТАТ

Выводит текущую дату. Функция автоматически не пересчитывается.

ДАТАИЗСТРОКИ

Функция ищет дату в строке вне зависимости от того в какой части текста она находится.

Дата прописью (ДАТАПРОПИСЬЮ)

Преобразует дату в текст в различных падежах и форматах.

Время прописью (ВРЕМЯПРОПИСЬЮ)

Записывает выбранное время прописью в различных форматах.

НОМКВАРТАЛА

Удобная формула для вычисления номера квартала по дате в Excel.

МАКСЕСЛИ

Определяет максимальное значение в указанном диапазоне при выполнении значений в этом диапазоне условию.

МИНЕСЛИ

Определяет минимальное значение в указанном диапазоне при выполнении значений в этом диапазоне условию.

СУММЗАЛИВКА

Суммирует ячейки с определенным цветом заливки.

СУММШРИФТ

Суммирует ячейки с определенным цветом шрифта.


СЧЁТЗАЛИВКА

Подсчитывает ячейки с определенным цветом заливки.

СЧЁТШРИФТ

Подсчитывает ячейки с определенным цветом шрифта.

СЧЁТУНИК

Подсчитывает количество уникальных ячеек в указанном диапазоне.

ПЕРВОЕВСТРОКЕ

Возвращает значение первой непустой ячейки в строке.

ПЕРВОЕВСТОЛБЦЕ

Возвращает значение первой непустой ячейки в столбце.

ПОСЛЕДНЕЕВСТРОКЕ

Возвращает значение последней непустой ячейки в строке.

ПОСЛЕДНЕЕВСТОЛБЦЕ

Возвращает значение последней непустой ячейки в столбце.

КОЛИЧЕСТВОСТРОК

Возвращает номер последней строки, которая содержит какие-либо данные.

КОЛИЧЕСТВОСТОЛБЦОВ

Возвращает номер последнего столбца, который содержит какие-либо данные.

УРОВЕНЬСТРОКИ

Возвращает уровень группировки строки.

УРОВЕНЬСТОЛБЦА

Возвращает уровень группировки столбца.

СЛУЧМЕЖДУСТАТ

Возвращает случайное число между заданными. Функция не пересчитывается автоматически.

СЛЯЧЕЙКА

Возвращает значение случайной ячейки из выбранного диапазона.

ГЕНЕРАЦИЯПАРОЛЯ

Генерирует случайный пароль заданной длины.

АДРЕССЫЛКИ

Возвращает адрес гиперссылки.

ТИПЯЧЕЙКИ

Возвращает тип данных, указанной ячейки.

ТЕКСТФОРМУЛЫ

Возвращает текст формулы указанной ячейки.

ТЕКСТФОРМУЛЫEN

Возвращает текст формулы указанной ячейки на английском языке.

ТЕКСТКОММЕНТА

Возвращает текст комментария указанной ячейки.

ФОРМАТЯЧЕЙКИ

Определяет формат данных в ячейке.

ИМЯЛИСТА

Возвращает название активного листа.

ИМЯКНИГИ

Возвращает название текущей книги.

ИМЯПОЛЬЗОВАТЕЛЯ

Возвращает имя текущего пользователя.

РАСПОЛОЖЕНИЕКНИГИ

Возвращает текущее расположение книги.

ДАТАСОЗДАНИЯ

Возвращает дату создания текущего файла.

ДАТАСОХРАНЕНИЯ

Возвращает дату последнего сохранения текущего файла.

ЦВЕТЗАЛИВКИ

Возвращает код цвета заливки указанной ячейки.

ЦВЕТШРИФТА

Возвращает код цвета шрифта указанной ячейки.

ЦВЕТЗАЛИВКИRGB


Возвращает шестнадцатеричный код RGB заливки указанной ячейки.

ЦВЕТШРИФТАRGB

Возвращает шестнадцатеричный код RGB шрифта указанной ячейки.

ДАТАПЕЧАТИ

Возвращает дату последней печати текущего файла.

ШРИФТИМЯ

Возвращает наименование шрифта в указанной ячейке.

ШРИФТРАЗМЕР

Возвращает размер шрифта в указанной ячейке.

ФАЙЛИМЯ

Определяет имя файла из полного пути к файлу

ФАЙЛПУТЬ

Определяет расположение папки в котором находится файл

Обратная связь

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

Я хочу сделать программу лучше, поэтому за дельный совет или найденную ошибку, в качестве благодарности, вы получите бесплатный ключ активации.

Обращаем Ваше внимание, что функционал, описанный в данной статье, ОТСУТСТВУЕТ в Excel. Чтобы его добавить, необходимо установить надстройку VBA-Excel. Данная программа содержит более сотни функций,которые сделают работу с Excel в разы эффективней. С ней рутинные задачи будут занимать считанные секунды. Программой уже воспользовались чел., попробуйте и Вы!

VBA автоматически скрывает ленту в Excel 2013

Как Auto-hide Ribbon в Excel 2013 в VBA? Я хотел бы получить именно то, что я получаю, нажав на значок верхней стрелки в правой верхней части меню Excel, отмеченный синим цветом на рисунке ниже, а затем щелкнув по первому варианту, отмеченному оранжевым:

Я также был бы заинтересован в переключении VBA на третий вариант « Show Tabs and Commands . Для меня важно сохранить в меню Excel значок верхней стрелки (отмечен синим).

Я пробовал подсказки, показанные в этой теме: VBA минимизирует ленту в Excel, но я не удовлетворен результатами.

Попытка 1

Это хорошо, но скрывает синий значок.

Попытка 2

Это близко к тому, что я хочу. Это сохраняет синий значок, но не скрывает все меню. Он переключается на второй параметр, отображаемый на вкладке « Show Tabs .

Попытка 3

Аттапт не работает вообще. Более того, он должен подражать попытке 2. Так что даже это меня не удовлетворит.

Я не вижу, чтобы кто-то еще это сделал … Это не обходной путь, это фактический idMSO для того, что я думаю, что вы ищете. Этот код заставляет мое окно Excel выглядеть так, как будто все прошло так же, как и первый вариант для Auto-Hide Ribbon .

Перед запуском кода мое окно выглядит так: в разделе «Восстановить»:

Выполнение следующего кода:

Будет ли ваше окно выглядеть так, в максимальном размере окна (точно так же, как если бы вы вручную нажимали кнопку Auto-Hide Ribbon ):

Если вы хотите, чтобы лента автоматически скрывалась при открытии книги, поместите ее в код рабочей книги:

В качестве альтернативы, для достижения того же, вы можете поместить этот код в модуль:

Если вы хотите, чтобы окно возвращалось обратно в нормальное состояние, вы снова запускаете тот же код. Другими словами, следующий код не будет делать никаких визуальных изменений вообще при запуске, потому что idMSO «HideRibbon» является toggleButton:

Если вы хотите получить полный список всех idMSO в excel, выберите следующее, применимое к вам: Excel 2013+ , Excel 2010 , Excel 2007

Вероятно, вы должны сделать что-то более сложное:

Используйте CommandBars.ExecuteMso «MinimizeRibbon» чтобы показать / скрыть ленту. В зависимости от того, что вы хотите, вы можете отображать / скрывать все другие вкладки в ленте. Например, используйте код здесь -> Excel Скрыть / Показать все вкладки на ленте, кроме отдельной вкладки

Таким образом, 2 этапа:

Шаг 1 – показать или скрыть CommandBars.ExecuteMso

Шаг 2 – показать или скрыть остальные вкладки с некоторыми макросами из ссылки.

Немного большой обходной путь, но вы получите то, что хотите.

Сначала перейдите в «Параметры Excel» и перейдите к «Панель быстрого действия».

Оттуда найдите «Скрыть ленту» и добавьте на панель инструментов. После того, как он находится в QAT, вы можете быстро его вызвать с помощью ALT + # (на моем компьютере это восьмое, поэтому ALT + 8 будет автоматически скрываться).

Затем просто добавьте sub, который делает SendKeys ALT, а затем 8:

Примечание. Я знаю, что глупо иметь ActiveSheet.Activate , я просто добавил, что для проверки макроса. В зависимости от того, как он вызывается, вы можете удалить / прокомментировать эту строку. % Эквивалентен ALT , и технически я должен нажать 0, затем 8, следовательно, две строки.

Я использую это для целей презентации

Application.DisplayFullScreen = True Это то, что я использовал, чтобы скрыть ленту

Я вызываю этот макрос в Workbook_Open, чтобы проверить ленту, и если она не скрыта, она скроет ленту (я на самом деле ее разместил в другом Sub, который также удаляет панель формул, строку состояния, заголовки и линии сетки в Workbook_Open) …

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

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

Знакомство с программированием в Excel

Добавление на ленту вкладки разработчика

Написание кода Ваших процедур и редактирование макросов производится в редакторе Visual Basic, который доступен с вкладки «Разработчик». Данная вкладка по умолчанию скрыта. Для ее отображения необходимо выполнить следующие действия:

Для Excel 2007. Зайдите в параметры Excel, используя кнопку Office, и в «основных параметрах работы с Excel» установите галочку на пункте «Показывать вкладку Разработчик на ленте».

Для Excel 2010 и 2013. В параметрах Excel нужно выбрать пункт «Настроить ленту» и в категории основные вкладки установить галочку для вкладки «Разработчик».

Знакомство с редактором Visual Basic в Excel

Чтобы попасть в редактор кода, кликните на вкладке разработчика в области «Код» по кнопке «Visual Basic».


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

№1 на изображении. Кнопка сохранить. Сохраняет текущую книгу Excel. Необходимо быть внимательнее при работе с несколькими книгами, так как текущей считается та, которая выделена в окне проектов (№3 на изображении).

№2 на изображении. Кнопки запуска, остановки и прерывания выполнения кода. Во время запуска начинает выполняться код той процедуры, на которой размещен курсор. Данные кнопки дублируются вкладкой «Run» основного меню редактора.

№3 на изображении. Окно управления проектами VBA открытых книг (Project Explorer) и кнопка, отображающая это окно.

№4 на изображении. Кнопка, отображающая окно свойств объектов (Properties Window), выбранных в окне №3, и элементов пользовательских форм (работа с объектами, их свойствами и методами будет рассмотрена в отдельной статье этой категории).

№5 на изображении. Кнопка вызова окна объектов (Object Browser). В нем описаны все доступные для работы объекты, их свойства и методы.

Кнопки №3, №4 и №5 так же доступны на вкладке «View» главного меню редактора. Там же можно вызвать другие полезные для работы окна, которые не будут рассмотрены в этом материале.

Написание простой процедуры на Visual Basic for Application

Код любой процедуры (подпрограммы) располагается в модуле, поэтому необходимо его добавить, чтобы приступить к программированию. Выберите пункт «Module» на вкладке «Insert» основного меню редактора VBA. В основной области редактора (на изображении имеет серый фон) должно появиться новое окно кода – Имя_книги – имя_модуля (Code), а в окне управления проектами (№3) к дереву выбранного проекта добавится вновь созданный модуль.

Добавьте в модуль следующий код:

Данная процедура выводит на экран диалоговое окно с сообщением «Привет пользователь!». Протестируйте ее работу, нажав кнопку Rub Sub (№2 на изображении) или вызвав как обычный макрос.

Теперь более подробно разберем приведенный код.

Любая процедура начинается со строки объявления, состоящей из оператора Sub (сокращение от Subprogram), после которого следует имя подпрограммы. За именем следует перечень аргументов, заключенный в скобки.

Для имени действуют некоторые ограничения: оно должно начинаться с буквы и не должно содержать пробелы и большинство спецсимволов.

В этом примере аргументы не используются, поэтому указываются пустые скобки.

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

Последняя строка содержит оператор End с последующим ключевым словом Sub и сообщает о завершении процедуры.

Учимся пользоваться Object Browser

Выше была упомянута функция MsgBox, но ее возможности полностью не рассмотрены. Это хороший случай, чтобы научиться использовать браузер объектов (№5 на изображении окна редактора VBA).

Нажмите кнопку на панели или клавишу F2, чтобы отобразить Object Browser:

Выпадающий список №1 содержит перечень всех подключенных библиотек. Используйте его только в том случае, если точно знаете, к какой библиотеке относится изучаемый класс, функция и т.д. (подключить или отключить любую из доступных библиотек можно, выбрав пункт «References» на вкладке «Tools» главного меню редактора VBA).

Примечание: Библиотеки предоставляют стандартные и дополнительные возможности работы с объектами Excel (ячейки, листы, книги и т.д.), файловой системы, изображениями, базами данных и другими.

Поле №2 предназначено для поиска свойств, методов, классов подключенных библиотек.

Результаты поиска отображаются в поле №3 и представляют из себя таблицу с тремя столбцами: библиотека, класс и член класса.

Поле №4 содержит перечень всех классов, выбранных в поле №1 библиотек.

В области №5 содержится список всех членов класса, выбранного в поле №4.

Поле №6 содержит краткую справку о выделенном результате поиска, классе или члене класса.

Примечание: библиотеки, классы, функции и процедуры (методы), свойства и т.п. в Object Browser имеют различные обозначения, представленные набором пиктограмм. Краткая справка (поле №6) всегда указывает какой тип элемента выделен. Обращайте на это внимание, чтобы в дальнейшем лучше ориентироваться в работе с объектами.

Примечание: Понятие объекта не относится к теме данной статьи и будет рассмотрено в следующих материалах.

Теперь найдем функцию MsgBox с помощью браузера объектов. В поле поиска (№2) впишите ее название и кликните по кнопке с изображением бинокля. В поле результатов поиска выделите строку со значением MsgBox в столбце «Member». В поле №6 появилась краткая информация, сообщающая нам, что выбранный член является функцией, имеет перечень аргументов, возвращает результат типа VbMsgBoxResult, относиться в классу Interaction библиотеки VBA.

Для получения полной справки кликните по кнопке с изображением вопросительного знака. В зависимости от версии Excel, Вас перенаправить на файл справки или сайт с документацией от Microsoft.

Изучите самостоятельно возможности функции MsgBox.

Ссылка на процедуру VBA

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

Для лучшего понимая рассмотрим пример (в примере используется псевдокод):

Выносите дублирующие участки кода в отдельные процедуры и указывайте ссылки на них из главной процедуры:

Для указания ссылки на процедуру используется оператор Call, который состоит из необязательного ключевого слова Call и имени вызываемой подпрограммы:

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.

У Вас недостаточно прав для комментирования.

Редактор Visual Basic в Excel

В этой главе даётся очень краткий обзор редактора Visual Basic в Excel. Если Вы любознательный читатель и хотите узнать еще больше информации о редакторе, то при желании без проблем найдете ресурсы с более подробным описанием.

Запуск редактора Visual Basic

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.

Окна редактора Visual Basic

В процессе работы в редакторе Visual Basic в Excel могут быть открыты различные окна. Управление окнами осуществляется в меню View, которое находится в верхней части окна редактора VBA. Ниже дано описание отдельных окон.

Окно проекта (Project)

Окно Project открывается в левой части редактора VBA (показано на картинке выше). В этом окне для каждой открытой рабочей книги создаётся проект VBA (VBA Project). Проект VBA – это набор всех объектов и модулей VBA, привязанных к текущей книге. Изначально в него входят:

  • Объект ЭтаКнига (ThisWorkbook), привязанный к книге Excel;
  • Объекты Лист (Sheet), привязанные к каждому листу текущей рабочей книги Excel.

Самостоятельно в проект можно добавить объекты Userform, Module и Class Module. Если Вы посмотрите на картинку выше, то увидите, что в проект VBA для книги Book1.xlsm добавлен объект Module с названием Module1.

Вот как можно создать новый объект Userform, Module или Class Module:

  • В окне Project выберите рабочую книгу, в которую нужно добавить объект, и кликните по ней правой кнопкой мыши.
  • В появившемся меню кликните Insert и в раскрывшемся меню выберите Userform, Module или Class Module.

Для каждого из описанных выше объектов предусмотрено специальное окно, в котором будет создаваться и храниться новый код VBA. Порядок при этом такой:

  • Код, который относится к рабочей книге, должен быть введён в соответствующий объект ЭтаКнига (ThisWorkbook);
  • Код, который относится к рабочему листу, должен быть введён в соответствующий объект Лист (Sheet);
  • Код более общего характера должен быть введён в Module;
  • Код для нового объекта должен быть введён в Class Module;
  • Если нужно создать диалоговое окно для взаимодействия с пользователем, то можно использовать Userform.

Окно кода (Code)


Двойной щелчок мышью по любому объекту в окне Project открывает соответствующее окно Code, предназначенное для ввода кода VBA с клавиатуры. На одном из приведённых выше рисунков показано окно кода для Module1.

По мере ввода кода VBA в окно Code, редактор Visual Basic следит за правильностью ввода, ищет ошибки в коде и выделяет код, который требует исправления.

Окно свойств (Properties)

В окне Properties перечислены свойства объекта, который в момент создания (не в процессе выполнения программы) выделен в окне проекта. Эти свойства могут быть различными в зависимости от типа выделенного объекта (лист, книга, модуль и другие).

Окно отладчика (Immediate)

Окно Immediate можно отобразить в редакторе Visual Basic через меню View > Immediate Window или нажатием комбинации клавиш Ctrl+G. Это окно помогает при отладке кода. Оно выполняет роль области вывода для отладки выражений и позволяет вычислять отдельные выражения или выполнять строки кода по одной.

Например, введите выражение “?j” и нажмите Enter – в результате будет выведено текущее значение переменной j.

Окно переменных (Locals)

Чтобы открыть окно Locals, нажмите Locals Window в меню View редактора Visual Basic. В этом окне отображаются все переменные, объявленные в текущей процедуре. Окно делится на столбцы, в которых содержатся имя, значение и тип каждой переменной, и эта информация обновляется автоматически в ходе выполнения программы. Окно Locals очень полезно при отладке кода VBA.

Окно отслеживания (Watches)

Окно Watches также очень помогает при отладке кода VBA, так как в нём можно увидеть значение, тип и контекст любого отслеживаемого выражения, которое задаст пользователь. Чтобы открыть окно Watches, нажмите Watch Window в меню View редактора Visual Basic. Также окно Watches будет открыто автоматически, если задать отслеживаемое выражение.

Чтобы задать отслеживаемое выражение, нужно:

  1. Выделить выражение в редактируемом коде VBA.
  2. В меню Debug редактора VBA нажать Quick Watch.
  3. Нажать Add.

Кроме рассмотренных, в меню редактора Visual Basic в Excel существует ещё множество параметров и команд, используемых при создании, выполнении и отладке кода VBA.

Engram 9 VBA Scripts

» Excel 2007 VBA

Creating a Toolbar

In previous versions of Office, you could manually create a simple toolbar with buttons and dropdowns. Now you can only do this using VBA code. The more complex controls, such as those of type msoControlEdit, msoControlDropdown, and msoControlComboBox, have always required VBA code. As with the new menu created earlier, Excel 2007 displays the new toolbar in the Add-Ins tab of the Ribbon. The toolbar in Figure 15-8 contains three controls.

The first is of type msoControlButton and displays the user form for the data list.

CcmmandBars^.tarti — Micrastttt Eycel

Page Lavcut Formulai Data Review V^sAi

DeVâBpér Aifd-Ins | ‘S1

1 [Name lAqe Sex

5 ¡Jackie S ¡Joan

Cf iKfeili/ dfl F

The second control is of type msoControlPopup and displays two controls of type msoControlButton, as shown in Figure 15-9.

CcmmandBarsailsm — Microsoft Ëflcel

îrisErt PagElaycut Formulât Data htVicVi Viöw

A1 Sort Decendrng

The third control is of type msoControlDropdown and applies an AutoFilter on Department, as shown in Figure 15-10.

|f*i Hcrné InsErt PagE tsymrt

F/rrmtilas Date Re^’r^i ViBW DE^EicpfT | Arid-lri!

IV’^T Commande lue

! iNaitie * lAqe ‘ Sé

Reacfy 3 of 17 records f ou r>d

The following code creates the toolbar:

Public Sub CreateToolbar()

‘Get rid of any existing toolbar called Manage Data On Error Resume Next CommandBars(«Manage Data»).Delete On Error GoTo 0

‘Create new toolbar

With CommandBars.Add(Name:=»Manage Data»)

With .Controls.Add(Type:=msoControlButton) .OnAction = «ShowDataForm» .Faceld = 264

With .Controls.Add(Type:=msoControlPopup) .Caption = «Sort»

.TooltipText = «Sort Ascending or Descending»

With .Controls.Add(Type:=msoControlButton) .Caption = «Sort Ascending» .Faceld = 210 .OnAction = «SortList» .Parameter = «Asc» End With

With .Controls.Add(Type:=msoControlButton) .Caption = «Sort Descending» .Faceld = 211 .OnAction = «SortList» .Parameter = «Dsc»

End With End With

With .Controls.Add(Type:=msoControlDropdown) .Addltem «(All)» .AddItem «AD» .AddItem «CR» .AddItem «DS» .AddItem «HR» .AddItem «MF» .AddItem «MK» .AddItem «RD» .AddItem «SL»

.OnAction = «FilterDepartment» .TooltipText = «Select Department» End With

End Sub

The toolbar itself is very simple to create. CreateToolbar uses the Add method of the CommandBars collection and accepts all the default parameter values, apart from the Name property. The first control button is created in much the same way as a menu item, using the Add method of the Controls collection. It is assigned an OnAction macro, a Faceld, and a ToolTip.

The second control is created as type msoControlPopup. It is given the Caption of Sort and a ToolTip. It is then assigned two controls of its own, of type msoControlButton. They are assigned the SortList macro and Parameter values, as well as Facelds and captions.

Finally, the control of type msoControlDropdown is added. Its drop-down list is populated with department codes and its OnAction macro is FilterDepartment. It is also given a ToolTip. The last action is to set the toolbar’s Visible property to True to display it.

The FilterDepartment macro follows:

«Database»).AutoFilter Field:=5, Criteria1:=sDept

A drop-down control has a List property that is an array of its list values and a Listlndex property that is the index number of the current list value. The ActionControl property of the CommandBar object, which refers to the currently active control, is a quick way to reference the control and access the List and Listlndex properties to get the department code required. The code is then used to perform the appropriate AutoFilter operation. If the (All) option is chosen, the AutoFilterMode property of the worksheet that is the parent of the Database Range object is set to False, removing the AutoFilter drop-downs and showing any hidden rows.

It is a good idea to run CreateToolbar from the Workbook_Open event procedure, and to delete the toolbar in the Workbook_BeforeClose event procedure. The toolbar will remain permanently in Excel if it is not deleted, and will give unexpected results if its buttons are pressed when other workbooks are active. If you do refer to command bars directly in workbook event procedures, you need to qualify the reference with Application:

Илон Маск рекомендует:  Часто задаваемые вопросы на forum codenet ru веб программирование
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL