vba подсказки в коде
Настраиваем свой редактор кода VBE
Вкладка Editor
Можете сразу выставить такие настройки, ниже описывается подробно каждая опция. Основное внимание обращаем на первые 2 параметра, остальное можно оставить по умолчанию.
Параметр Auto Syntax Check
Однозначно отключаем! Параметр отвечает за автоматическую проверку синтаксиса. Во включенном состоянии будет постоянно появляться окно с информацией о синтаксической ошибке. Например, пишешь код, захотел скопировать название переменно или функции из строки выше, а компилятор выводит диалоговое окно, которое необходимо закрыть.
Поэтому смело отключайте. В случае синтаксической ошибки код будет подсвечиваться красным, пропустить невозможно.
Параметр Require Variable Declaration
Я сторонник обязательного декларирования переменных и указания их типов. Во включенном состоянии редактор кода будет включать оператор Option Explicit в создаваемые модули/классы и формы. Это означает, что перед тем как использовать переменную вам потребуется ее явно объявить.
Параметр Auto List Members
Этот параметр отвечает за автоматический вывод списка объектов. Когда мы пишем код и ставим точку после объекта, то редактор выводит список доступных свойств и методов у данного объекта. Однозначно включайте эту опцию, она сэкономит время на наборе кода и также подскажет правильный синтаксис если вы его забыли.
Проверить его в действие можно введя, например, текст «Application.»
Вы сможете стрелками вверх вниз выбирать нужный объект и клавишей Tab вставлять в код без ошибок.
Параметр Auto Quick Info
Тоже нужный параметр, который позволит писать код быстрее. Во включенном состоянии VBE будет отображать информацию об аргументах функций, после вставки открывающий скобки «(«.
Параметр Auto Data Tips
Включайте этот параметр он будет отображать значения свойств и методов при наведении на них в режиме отладки кода. Вот так:
Параметр Auto Indent
Параметр отвечает за автоматический отступ текста. Во включенном состоянии при переходе на новую строку будет использоваться тот же отступ, что и для предыдущей строки. Да, конечно не Visual Studio с автоматическим отступом в зависимости от вложенности, но тоже какой никакой плюс.
Параметр Drag-and-Drop Text Editing
Если вам удобно переносить текст перетаскиванием, то нужно активировать эту опцию. Я обычно пользуюсь сочетанием клавиш копирования и вставки.
Параметр Default to Full Module View
Если отключить данный параметр то можно будет просматривать только одну процедуру или функцию, это не удобно, особенно когда проект большой. Поэтому не отключайте данную опцию.
Параметр Procrdure Separator
Тоже лучше оставить, чтобы визуально отслеживать начало и окончание функций и процедур.
Вкладка General
На данной вкладке стоит обратить внимание на параметр Error Trapping, остальные настройки можно оставить по умолчанию.
Параметр Error Trapping
Опция отвечает за перехват ошибок. В основном потребуется для продвинутых разработчиков, которые пишут не только модули, но также создают классы и пытаются писать в парадигме объектно-ориентированного программирования.
Долгое время не знал о существовании этой опции и старался избегать классов, так как отслеживать в них ошибки было настоящей проблемой. VBE не останавливался на конкретной строке кода в классе, а отображал ошибки только в модулях программы.
Если установить опцию Break in Class Module то в случае возникновения ошибки в классе, редактор остановится на этой строке кода и вы сможете быстрой найти причину ошибки.
Form Grid Settings
Настройки сетки на создаваемых формах. На мой взгляд бесполезная настройка, оставляю ее по умолчанию. При необходимости мы можете задать свой размер сетки и отменить привязку элементов формы (контролов) к сетке.
Прочие настройки
Другие вкладки
Про вкладку Editor Format поговорим в отдельной статье, когда будем разбирать создание своей темы редактора.
Вкладка Docking особого интереса не представляет так как отвечает за прикрепление панелей. Там лучше все оставлять по умолчанию.
Всплывающие подсказки
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Всплывающие подсказки при наведении на ячейку на листе
Подскажите, пожалуйста, как можно сделать всплывающие подсказки при наведении на ячейку на листе.
Подсказки в Ворде
здравствуйте, есть код: ‘добавление поля AUTOTEXTLIST с подсказкой Selection.Fields.Add.
Подсказки для цвета выделения ячеек
Если кто то знает то подскажите как решить следующюу задачу: есть лист в Экселе на котором разными.
Задание по VBA. Нужны подсказки новечку
Приветствую всех. Я новенький на этом форуме, да и в самой сфере программирования и мне нужна.
а если у Контрола нет ControlTipText
что тогда. Вообще не пойму почему у одного Контрола есть всплывающие подсказки у другого нет, нет понятно, согласно логике, но пусть бы пользователь-разработчик сам решил нужна она ему или нет. Да какая логика, если даже у кнопки нет подсказки, обалдеть, если по логике она ей не нужна то я пас
Добавлено через 1 час 21 минуту
как глазом моргнуть, правым или левым?
Добавлено через 54 секунды
и потом я лично не знаю как заголовок формы убрать??
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как добавить VBA подсказки на Excel 2013
Добрый день! Обновил Excel 2010 до 2013 и в VBA исчезли подсказки. Кто знает как их вернуть.
Существует ли возможность создания подсказки при вводе
Дано поле, туда вводится название чего-либо, попутно вводу выходят подсказка, предпологаемые слова.
Всплывающие форма с чекбоксами
Есть VBA-скрипт, вычисляющий 30 различных значений. Подскажите, как сделать всплывающую форму с.
VBA Excel как создать подсказку
Доброго времени суток
возможно ли создание подсказки (коммента) в пользовательской функции подобно как в стандартных функциях Excel?
Место которое интересует на рисунке выделено красным
Как создать всплывающую подсказку в Excel
Можно ли написать Макрос Worksheet_SelectionChange, чтобы при выделении конкретной ячейки над ней.
Возможно ли из написанных в Excel макросов создать как отдельный файл *.exe / VBA?
Здравствуйте! Помогите пожалуйста, возможно ли создать из своей работы в Excel отдельное.
Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel
нужно 1. Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel. как.
Создать робота на VBA Excel
Задача: Создать макрос, который развернет нужное мне приложение, и отработает нажатие определенных.
Решение
Решение
Кстати у меня тоже через object browser изменения не сохраняет.
Добавлено через 56 секунд
Записала макросом, получила код:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Excel (VBA) создать папку
Не знаю возможно ли это вообще, если возможно то хелп. Короче есть у меня задумка как можно.
Как создать подсказку в головоломке?
Всем доброго времени суток) очень нужна ваша помощь! Делаю игру на подобии «О счастливчик».
Как создать файл DLL так, чтобы его можно было подключить к VBA Excel?
Пытаясь научиться подключать к VBA хотя бы самую тривиальную функцию на C++. Для примера написал.
Как создать всплывающую подсказку к фото-баннеру?
Добрый день. Как создать всплывающую подсказку к фото-баннеру, чтобы она появлялась при наведении.
Vba подсказки в коде
К сожалению, я не смог вовремя дать обратную связь, но, как говорится, лучше поздно, чем никогда.
До вашего тренинга мой уровень владения VBA в Excel был около нулевым, программирование для меня было просто каким-то чудом. Поэтому первые 4 урока приходилось себя просто заставлять выполнять домашние задания, так как мой мозг отчаянно сопротивлялся, из-за того что всё было незнакомо, постоянно вылетали какие-то ошибки, которые я не знал как исправить. К тому же, вы оставляли специально такие места в задании, которые не были освещены в уроке. Сам я их решить не мог, расстраивался, приходили мысли в голову, что это не моё, я слишком тупой для этого и т.д. И так два раза я бросал эту затею.
На третий раз я смог преодолеть все выше описанные проблемы, и после шестого урока я смог автоматизировать свои процессы на работе, многократно их ускорив, плюс исключил возникновение ошибок.
Поэтому в качестве усовершенствования ваших тренингов (чтобы люди не сдавались, из-за описанных мною причин выше) на первом занятии или при выдачи ДЗ предупреждайте, что есть в задании подводные камни, и если вы его не сможете выполнить полностью, то это нормально. Не всё сразу. Москва тоже не сразу строилась. Просто выполните задачу по максимуму.
Если бы было это предупреждение в тренинге, то чисто психологически проходить его было бы легче.
И чтобы усилить вашу рекламу (про стоимость урока равной бигмаку), добавьте что-то в таком стиле: «Чувство насыщения от БигМака уйдет через два часа, а приобретенные знания и навыки останутся с вами на всю жизнь».
Спасибо Вам большое за качественные материалы. Теперь я понимаю, что программирование — это не магия).
Так держать! Ничего менять не надо.
Ещё раз спасибо и успехов!
Добрый день, уважаемые участники проекта!
Хочу написать немного о себе и о пути, который привел меня на тренинг.
По специальности я инженер полупроводниковых и микроэлектронных приборов. В рамках получения в/о, изучал Fortran. Имею представления об алгоритме и блок-схемах.
Недавно работаю сотрудником контрольно-аналитического отдела в ЖКХ.
Наш отдел занимается анализом данных. Самостоятельно начал искать пути автоматизации анализа и этот путь привел к ВАМ на тренинг.
На базе бесплатных уроков мне удалось написать программку, которая позволила значительно увеличить производительность труда. Для меня и коллег это было как чудо.
Трудности автоматизации в Excel у меня связаны с отсутствием опыта, низким уровнем владения операторами VBA.
Мне нравятся «чудеса», которым нас учит Дмитрий Быстров. Они позволяют «лениться», учиться, удивляться и удивлять окружающих. Перекладывать тяжелый, рутинный труд по обработке данных на «плечи машин».
Огромная благодарность Дмитрию Быстрову за тренинг, за его отношение к занятиям, к участникам тренинга.
С уважением, участник тренинга, Игорь Фурман.
Хотел бы поделиться своими впечатлениями о мастер-классе «Видео-справочник по функциям VB».
В любом случае, я очень благодарен автору за колоссальную работу. С нетерпением жду получение видеозаписи второй части мастер-класса с тем, чтобы еще раз тщательно все проработать.
Несколько советов по работе с VBA в Excel
Добрый день!
Некоторое время назад меня попросили «помочь с Экселем», а потом и работа подвернулась такая, так что за последние пару месяцев я узнал много полезного, чем и хочу поделиться в догонку к недавней статье.
Предполагается, что вы знаете основы Visual Basic. Я не буду рассказывать, как создавать формы или модули, здесь только примеры кода.
Visual Basic
Опции
Во-первых, в VB массивы могут начинаться с индекса 1, что для многих странно, поэтому в начале модулей можно прописывать:
Так же рекомендуется прописать:
В этом случае интерпретатор потребует заблаговременного объявления всех переменных. Переменные объявлять нужно потому, что:
— VB запомнит их нАпиСание и не будет исправлять во всём коде на последний введенный вариант;
— иногда возникают ошибки с передачей переменных byRef, если они не объявлены (то есть надо или объявить переменную, или приписать в функции/процедуре перед ней byVal).
Ещё одним важным оператором является ON ERROR. Привожу варианты:
Возможности языка
Хотя VB довольно прост, полезно почитать документацию по его синтаксису. Я, например, с удивлением узнал, что можно прописывать сложные усолвия в SELECT’ах (аналог switch):
Ускорение работы макросов
Часто макросы требуют долгого времени выполнения, которое можно значительно сократить. В начале и в конце каждой ресурсоёмкой функции вызвать Prepare и Ended.
По порядку:
1. Отключить перерисовку объектов на экране, чтобы ничего не мигало.
2. Выключить расчет. Внимание, если макрос прерваляс посреди работы, то расчет так и останется в ручном режиме!
3. Не обрабатывать события.
4. Отображение границ страниц, тоже почему-то помогает.
5. В статусной строке выводятся различные данные, что замедляет работу, отключаем.
6. Это если нужно. Выключает сообщения Экселя. Например, мы делаем Workbook.Close, Эксель хочет спросить сохранить ли изменения. При выключении этого параметра все ответы будут даны автоматически (изменения не сохранятся).
Важно понимать, что VBA выполняет все действия так же, как и пользователь. Поэтому для того, чтобы установить параметры страницы, он каждый раз открывает и закрывает окно параметров. У меня выставлялись параметры для 10 листов, это реально не быстро. Поэтому делаем так:
Далее, часто нужно просмотреть различные диапазоны ячеек и что-то с ними сделать. Тут важно не использовать циклы for с перебором индексов, они медленные. Можно использовать встроенные функции Экселя, но удобнее всего такой вариант:
Данный код просматривает указанный диапазон, выбирает в нем «специальные ячейки», в данном случае все, в которых есть формулы (т.е. начинаются со знака равно). Для каждой ячейки смотрится, если она не закрашена, то её надо защитить (см. далее) и покрасить. Такой код работает очень быстро.
Для любых переменных, которым вы собираетесь присвоить книгу, лист, диапазон (ячейку) нужно предварительно объявить как Variant.
Естественно, что если вам нужны однотипные значения в ячейках, нужно использовать автозаполнение, всё равно как «растягивание» ячеек пользователем.
Второй диапазон должен включать первый, а второй необязательный параметр указывает тип автозаполнения.
Загрузка книги и события
При открытии книги каждый раз срабатывает процедура.
В данном случае настройки печати (поля, ориентация) сбрасываются на дефолтные. Можно и другую инициализацию выполнять. Важно, что если макросы отключены, то и не выполнится ничего. Если в Экселе вылезла вверху панелька с предупреждением о макросах и пользователь нажал «Включить», то именно в этот момент выполнится процедура Workbook_open().
Список доступных событий можно посмотреть вверху редактора VB. Например, я делал на событие Change проверку, где лежит ячейка, в которой было изменения, и если это нужный диапазон, то делалась запись в лог со старым и новым значением.
Защита
Во-первых сразу отмечу, что MS Office не исполняет макросы на компьютерах, где он не нашел антивируса, если книга зашифрована. Сталкивался на компьютерах, где антивирус был, но видимо Windows XP об этом не знала.
Ещё антивирус может странным образом мешать работе, вызывать ошибки, не совсем объяснимые. Показал айтишникам, сказали ок, что-то сделали, не знаю.
Итак, нам надо защитить книгу, чтобы ввод был разрешен только в нужные ячейки (формулы и заголовки поменять нельзя). Во-первых, нужно сделать соответствующие ячейки «не защищенными». Для этого делаем одно из:
— выделяем диапазон, формат ячеек, снять галочку «Блокировать ячейку»;
— выводим кнопку «Блокировать ячейку» в быстрый доступ и нажимаем её, очень удобно смотреть на неё чтобы понять, защищена ячейка или же нет;
— а это пригодится, чтобы проверить третий вариант — написать макрос, который снимает защиту с нужных ячеек сам.
Далее нужно защитить лист. На вкладке Рецензирование есть такая кнопка. Окошко просит ввести пароль и установить исключения (что можно будет делать пользователю). К сожалению, список исключений маловат. Самое обидное, что нельзя разрешить сворачивать/разворачивать группы столбцов/строк. Поэтому действуем так, на загрузку книги прописываем:
Знак подчеркивания продолжает логическую строку на следующей физической строке. Итак, здесь мы:
1. Сняли защиту.
2. Включили группировку.
3. Поставили защиту, при этом:
— защита только от юзера, макросы продолжают иметь полный доступ (!), крайне важно;
— разрешили сортировку, фильтрацию и форматирование строк/столбцов (высота/ширина);
— DrawingObject в данном случае снимает защиту с примечаний к ячейкам, может и ещё с чего.
Тут мы сталкиваемся с парой сюрпризов. Во-первых, не все макросы будут работать даже так. Известный баг, ничего не сделаешь. Нельзя вставить строку, например. Приходится снимать и тут же ставить защиту. Если «злоумышленник» в этот момент нажмет ctrl+break, то защита слетит.
Во-вторых, скажем никаким способом нельзя удалять строки (AllowDeletingRows), в которых есть защищенные ячейки, хоть одна. Подробнее вот тут.
Решением (костылем) является добавление кнопки или сочетания клавиш для удаления. Заодно можно проверить, чтобы пользователь не удалил чего не надо. В Workbook_open добавляем:
Теперь процедура будет вызываться при нажатии shift+delete.
Знаю, код некрасивый, простите. Здесь я пытался проверить, что выделена строка, то есть строк там 1, а ячеек не меньше тысячи. Чтобы удалить не то, придется выделить тысячу ячеек начиная не с первого столбца. Далее проверяется имя листа и номера строк. Вместо 50 был расчет последенй строки (ведь их число меняется, если мы их удаляем и добавляем).
Заключение
VBA — весьма глючная вещь, которая позволяет сворачивать горы в MS Office. Многие предприятяи используют модели на Excel годами, и если они сделаны хорошо, то всё работает.
Для изучения VBA подходит он сам, во-первых там хорошая справка. Например, чтобы узнать все варианты что можно разрешить в методе Protect, нажимаем F1, Protect, ввод. И вуаля.
Предлагаю знатокам поделиться своим опытом, дать советы в комментариях. Спасибо за внимание, удачных разработок вам.