4 ошибки, которых следует избегать при программировании макросов Excel с помощью VBA

4 ошибки, которых следует избегать при программировании макросов Excel с помощью VBA

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





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





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





Начало работы с VBA

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

Если вы еще не программировали на VBA в Excel, вам потребуется включить инструменты разработчика в программе Excel. Хорошая новость в том, что включить инструменты разработчика на самом деле довольно просто. Просто зайдите в Файл > Параметры а потом Настроить ленту . Просто переместите Разработчик вкладка с левой панели на правую.



Убедитесь, что эта вкладка включена, и теперь в вашем меню Excel появится вкладка «Разработчик».

Самый простой способ попасть в окно редактора кода отсюда - просто нажать на Просмотреть код кнопка под Органы управления в меню разработчика.





Теперь вы готовы писать код VBA! На этой вкладке вы получите доступ к VBA, а также запись макросов в Excel . Теперь, когда Excel готов к работе, давайте рассмотрим некоторые распространенные ошибки, которых следует избегать, и способы их предотвращения.

1. Ужасные имена переменных

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





вставка горизонтальной линии в слово

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

  • Сделайте их как можно короче.
  • Сделайте их как можно более информативными.
  • Перед ними укажите тип переменной (логическая, целочисленная и т. Д.).

Вот пример снимка экрана из программы, которую я часто использую для выполнения вызовов WMIC Windows из Excel для сбора информации о ПК.

Если вы хотите использовать переменные внутри функции в модуле или объекте (я объясню это ниже), вам необходимо объявить ее как «общедоступную» переменную, предварительно указав перед объявлением Общественные . В противном случае переменные объявляются с помощью перед ними слова Никто .

Как видите, если переменная является целым числом, перед ней стоит int . Если это строка, то п . Это личное предпочтение, которое помогает позже при программировании, потому что вы всегда будете знать, какой тип данных содержит переменная, взглянув на имя.

Кроме того, не забудьте назвать листы в своей книге Excel.

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

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

Одна из наиболее распространенных проблем, с которыми сталкиваются начинающие программисты VBA, когда они начинают писать код, - это правильная работа с циклами.

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

Новые программисты часто хотят просто выйти из цикла (циклы VBA For или циклы VBA Do While) немедленно, когда выполняется определенное условие.

Вот пример использования этого метода для разрыва цикла VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

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

Чаще всего важно обработать код, который следует после этого «перерыва». Гораздо более чистый и профессиональный способ справиться с условиями, в которых вы хотите выйти из цикла на полпути, - просто включить это условие выхода в нечто вроде инструкции while в VBA.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Это обеспечивает логическую последовательность вашего кода. Теперь код будет проходить цикл и остановится, когда достигнет 6. Нет необходимости включать неудобные команды EXIT или BREAK в середине цикла.

3. Не использовать массивы

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

Это также может привести к серьезным проблемам с производительностью. Цикл по столбцу и извлечение значений каждый раз убивает ваш процессор. Более эффективный способ обработки длинных списков чисел - использование массива.

Если вы никогда раньше не использовали массивы, не бойтесь. Представьте себе массив как лоток для кубиков льда с определенным количеством «кубиков», в которые вы можете помещать информацию. Кубики пронумерованы от 1 до 12, и именно так вы «помещаете» в них данные.

Вы можете легко определить массив, просто набрав Dim arrMyArray (12) как целое число .

как уменьшить другое хранилище на iphone

Это создает «лоток» с 12 слотами, которые вы можете заполнить.

Вот как может выглядеть код цикла строк без массива:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

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

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

Вот лучший пример с использованием массива. Сначала создадим массив.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

В х-1 указание на элемент массива необходимо только потому, что цикл For начинается с 1. Элементы массива должны начинаться с 0.

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

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

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

4. Использование слишком большого количества ссылок

Независимо от того, программируете ли вы на полноценном Visual Basic или VBA, вам необходимо включить «ссылки» для доступа к определенным функциям.

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

В этом окне вы найдете все выбранные в данный момент ссылки для вашего текущего проекта VBA.

Вам следует проверить этот список, потому что ненужные ссылки могут тратить ресурсы системы. Если вы не используете какие-либо манипуляции с XML-файлами, тогда зачем оставлять Microsoft XML выбранным? Если вы не общаетесь с базой данных, удалите Microsoft DAO и т. Д.

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

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

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

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

сенсорный экран Android не работает должным образом

Программирование в Excel VBA

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

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

Делиться Делиться Твитнуть Эл. адрес Стоит ли переходить на Windows 11?

Окна были переработаны. Но достаточно ли этого, чтобы убедить вас перейти с Windows 10 на Windows 11?

Читать далее
Похожие темы
  • Продуктивность
  • Программирование
  • Программирование
  • Программирование на Visual Basic
  • Майкрософт Эксель
Об авторе Энтони Грант(Опубликовано 40 статей)

Энтони Грант - внештатный писатель, освещающий программирование и программное обеспечение. Он специализируется в области компьютерных наук, занимается программированием, Excel, программным обеспечением и технологиями.

Ещё от Anthony Grant

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться