Записи с меткой "VBA управление кодами"

Сбивается путь к UDF из надстройки

Если уже начали создавать надстройки не только для себя, то наверняка сталкивались с такой неприятностью, что если в каком-то файле используется пользовательская функция(UDF) из этой надстройки, то при пересылке такого файла другому человеку, функция не работает должным образом, а файл ругается на наличие связей. При этом если найти ячейку с любой UDF из надстройки, то она будет записана в ячейку вместе с полным путем к надстройке не на текущем компьютере, а на том, в котором файл с UDF был сохранен в последний раз(с которого был прислан...

Кодовое имя листа - что это и зачем нужно? Какие плюсы и минусы?

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

Элементы ActiveX перестали работать или ведут себя непредсказуемо

В Microsoft Office после определенных обновлений может появиться проблема: Перестают работать все элементы ActiveX (кнопки CommandButton, списки(Lists и ComboBox) и пр.) во всех файлах, а так же невозможно вставить любой элемент ActiveX на лист(при попытке вставки появляется сообщение Вставка объекта неосуществима), а при работе с таким файлом может появится ошибка Can't exit design mode because control cannot be created). Подробнее про вставку таких элементов на лист можно прочитать в статье: КАК СОЗДАТЬ КНОПКУ ДЛЯ ВЫЗОВА МАКРОСА НА ЛИСТЕ? Там я описывал пример вставки кнопки через ActiveX, но сути...

Новая статья: что значит ошибка Too Many Line Continuations

Добавил на сайт новую статью, которая поможет разобраться с ошибкой Too Many Line Continuations при написании кодов вручную или записи их макрорекордером. Ошибка сама по себе хоть и не нова, но встречается весьма редко и в некоторых ситуациях может подпортить жизнь основательно. В статье я описываю один из таких случаев - когда ошибка появляется при записи действий макрорекордером, что само по себе не несет радости, т.к. макрорекордер-то вроде должен учитывать уж такие-то вещи. Но нет. И т.к. эта ошибка наиболее часто появляется именно при записи...

Code execution has been interrupted - что за баг?

Иногда при выполнении вполне рабочего кода может возникнуть ошибка "Code execution has been interrupted": чаще всего она появляется в циклах (это Do ... Loop, For each, For ... Next). Но может проявится и на отдельных участках кода совершенно независимо от того, что делает тот или иной кусок кода. Сама по себе ошибка не является таковой - при нажатии Continue код продолжает работать и может даже дойти до конца уже без ошибок. Но что примечательно - появившись в каком-то коде однажды, эта ошибка начинает преследовать вас и при этом воспроизводится только на том ПК, на котором...

Как защитить проект VBA паролем

Для тех кто уже освоился более-менее в программировании на Visual Basic for Application рано или поздно непременно встает вопрос: как защитить свой код от изменений или даже от просмотра? Как правило это делается в файлах, которые в дальнейшем "гуляют по рукам". Т.е. автор создал и потом файл отсылается или другим пользователям, или клиентам, поставщикам и т.п. Чтобы у тех, кто будет в дальнейшем работать с этим файлом, не было возможности подсмотреть проект и тем более что-то в нем изменить. В каких-то случаях цель такой защиты это защита "от дурака": чтобы по...

Как убрать заголовок у UserForm VBA

Иногда при разработке интерфейсов программы с помощью форм пользователя(UserForm) бывает необходимо запретить закрытие формы крестиком. Причин много: например на форме много элементов выбора и пользователь не должен просто закрывать форму крестиком, не выбрав что-то конкретное. Или может форма должна висеть постоянно на листе до тех пор, пока программа не сделает все необходимые действия и т.д. Варианта два Вариант 1 Можно просто запретить закрывать форму. Это значит, что после нажатия на крестик ничего не произойдет. Для этого надо перейти в...

Отобразить процесс выполнения

Часто при создании кодов в VBA используется обращение к ячейкам, листам, книгам и т.д. и их обработка в циклах. Пара примеров подобных циклов: Просмотреть все файлы в папке - цикл по файлам в папке - Do While sFiles "" и For Each objFile In objFolder.Files Массовая замена слов - цикл по ячейкам(массивам) - For lr = 1 To UBound(avArr, 1) Не работают/пропали меню - цикл по всем панелям - For Each cmdBar In Application.CommandBars Если операция в цикле выполняется за пару секунд - это вполне приемлемо и отражать графически подобные действия нет нужды. Но, если циклы "крутятся" по полчаса - вполне неплохо иметь...

Как ускорить и оптимизировать код VBA

Рано или поздно у пишущих на Visual Basic for Applications возникает проблема - код хоть и облегчает жизнь и делает все автоматически, но очень долго. В этой статье я решил собрать несколько простых рекомендаций, которые помогут ускорить работу кода VBA, при этом в некоторых случаях весьма внушительно - в десятки, а то и больше, раз. Основной упор в статье сделан на начинающих, поэтому в начале статьи приводятся самые простые методы оптимизации. Более "глубокие" решения по оптимизации кода приведены в конце статьи, т.к. для применения данных решений...

Кто вызвал функцию или процедуру?

Предположим вы написали два макроса - один скрывает строки, другой отображает. 'скрываем строки Sub HideRows() Range("A3:A14").EntireRow.Hidden = True End Sub 'показываем строки Sub UnhideRows() Range("A3:A14").EntireRow.Hidden = False End Sub'скрываем строки Sub HideRows() Range("A3:A14").EntireRow.Hidden = True End Sub 'показываем строки Sub UnhideRows() Range("A3:A14").EntireRow.Hidden = False End Sub И, конечно - создали кнопки для вызова этих двух кодов (подробнее про создание кнопок - Как создать кнопку для вызова макроса на листе). Но потом захотелось большего - чтобы была всего одна кнопка и первым нажатием строки...

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2018 Excel для всех   Войти