Автор Тема: Сравнение VBA с другими языками программирования.  (Прочитано 22 раз)

Онлайн Администратор

  • Administrator
  • Сообщений: 1547
Если вы только начинаете изучать программирование, то может быть не нужно изучать VBA, а сразу изучайте какой-нибудь другой язык программирования, который развивается и востребован на рынке труда.

ПРЕИМУЩЕСТВА VBA ПЕРЕД ДРУГИМИ ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ
Есть парадокс: VBA не развивается уже лет 20 - 30, но при этом он имеет некоторые преимущества перед другими языками программирования.

1. Макрос можно вставить внутрь файла

Макрос можно вставить внутрь файла, у которого расширение xlsb, xlsm.
В каких-то случаях это может быть удобно.
У других языков программирования такой возможности нет - макрос будет находиться в отдельном файле, который нужно подключать в экселе. Такой отдельный файл называется 'надстройка'.

2. Некоторые макросы, сделанные на VBA, могут работать и в виндоусе и в макинтоше

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

Я не знаток в языках программирования, но предположу, что на некоторых языках программирования нельзя сделать макрос для макинтоша. Например, есть языки C#, VB .net - это языки организации 'Майкрософт'. А операционная система 'Макинтош (Mac OS)' создана другой организацией, которая является конкурентом для организации 'Майкрософт'. Поэтому предположу, что на C#, VB .net нельзя написать макрос для операционной системы 'Макинтош'. Или может быть и можно, но сложно.
НЕДОСТАТКИ VBA ПЕРЕД ДРУГИМИ ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ
Есть парадокс: в некоторых случаях vba-программисту нужно делать действия профессиональных программистов.
По сути vba-программисты - это случайные люди в программировании, которые не учились на программистов, не знают информатики. Например, человек стал работать в программе 'Word' и захотел не делать монотонную работу. В этом случае этот человек может войти в программирование и стать vba-программистом.

Примеры, когда могут потребоваться действия профессиональных программистов:
1) Использование Win32 API функций. Эти API функции сделаны для языка C++ и их легко использовать в C++, а в VBA их в некоторых случаях тяжело использовать, т.к. нужно адаптировать, а для этого нужны глубокие познания программирования.

2) В VBA нет сортировки массива. При этом Майкрософт не предлагает на своём сайте код сортировки. То есть подразумевается, что vba-программист должен сам сообразить, как написать код сортировки. Пузырьковой сортировки может быть недостаточно, т.к. она начинает долго работать на 5 тыс. строках. Эксель-листа может не хватить, если надо сортировать более 1 млн строк. Поэтому потребуется особое логическое мышление, чтобы написать быструю сортировку. Может ли такую сортировку сделать человек, не имеющий отношение к математике, информатике? Нет.
А в C++ есть готовые инструменты для сортировки.

1. Сложности в использовании UserForm

Сложно сделать макрос, в котором есть UserForm. В VBA в UserForm у листбокса (ListBox) нет прокрутки колёсиком мыши, что очень неудобно.
Нет и других элементарных возможностей, которые есть в развивающихся языках программирования. И такие возможности никогда не появятся в VBA.

2. Тяжелее обрабатывать ошибки

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

3. Работа не с экселем, а с чем-нибудь другим

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

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