Vba для чего используется
Запуск компьютера
Для чего нужен Visual Basic?
Visual Basic (VB), детище компании Microsoft, является компонентно-ориентированным и объектно-ориентированным языком программирования. Он основан на Basic (QBasic и др.), который является его предшественником. Язык VB отличается удобством и быстротой разработки приложений, чему отчасти способствуют встроенный отладчик и встроенная подсказка во время набора текста. Кроме того, Visual Basic обладает доступом к различным приложениям Microsoft Office и сильно связан своей средой разработки с операционной системой Windows.
Проблематично найти какую-либо другую альтернативу VB в случае, когда программу необходимо разработать в кратчайшие сроки. Данный язык программирования привлекает начинающих программистов удобным интерфейсом пользователя, благодаря которому Visual Basic часто используют при обучении. Всё это и многое другое привело к его высокой популярности.
Рассмотрим перечень задач, которые решает VB. В первую очередь его используют в решении математических, инженерных и аналогичных задач, где требуются расчёты. Язык Visual Basic применяется в процессе обучения программированию из-за своей простоты и лёгкости в изучении. По этим параметрам он пока занимает лидирующие позиции. Данный язык программирования входит наряду с другими языками в программы обучения в школах, училищах, колледжах и учебных центрах.
Язык Visual Basic также используют в разработке бизнес-приложений, проектировании баз данных, создании веб-приложений, основанных на применении HTML-шаблонов, макетов приложений, а также библиотек с последующим переносом на язык Си. На VB создаются игры (пример – игра «О, счастливчик!»).
Данный язык имеет возможности группового создания программ, облегчая координацию манипуляций исполнителей. С его помощью можно решать задачи в программах пакета MS Office и других приложениях.
Язык Visual Basic входит в состав приложений, подобных Visual Studio Express. VB for Applications (VBA), применяемый для создания прикладных программ и макросов, используется в таких приложениях, как: MS Word, MS Excel, MS Visio. Язык VBA наиболее популярен в приложениях пакета Microsoft Office, подвержен воздействию и распространению макровирусов. Существует также PowerBasic, позволяющий разрабатывать и транслировать исходный код в низкоуровневые DLL-библиотеки (подобно языку Си).
VBA-Урок 1. Что такое VBA. Основные понятия.
В данном разделе мы рассмотрим что такое VBA, посколько именно на нем и пишутся макросы.
Что такое VBA?
Объекты (Objects)
Главный объект это Application, что соответствует самой программе Excel. Далее следует Workbooks (книга), Worksheets (лист), Range (диапазон, или отдельная ячейка). Например, чтобы обратиться к ячейке «A1» на листе нам нужно будет прописать следующий путь с учетом иерархии:
Application.Workbooks(«Архив»).Worksheets(«Аркуш1»).Range(«A1»).
Коллекции (Collections)
Свойства (Properties)
Worksheets(“Sheet1”).Range(“A1”).Value або Worksheets(“Sheet1”).Range(“A1”).Formula
В данном примере, свойство отображает значение, которое введено в ячейку или введенную формулу.
Также, через свойство Formula можно не только получить формулу, но и записать ее:
Методи (Methods)
Теперь давайте рассмотрим, каким образом мы можем управлять содержимым диапазона или ячейки. Для этого в VBA существуют, так-называемые методы (команды «что сделать»). При написании кода методы отделяются от объекта точкой, например:
Range(«A1»).Select или Cells(1, 1).Select
Данный метод указывает выбрать (Select) ячейку «A1».
Далее, давайте, удалим значение в данной ячейке. Для этого напишем следующий код:
Selection.ClearContents
Здесь программа «берет» то, что мы выделили (Selection) и удаляет его содержимое (ClearContents ).
Зачем мучиться с VBA?
Зачем мучиться с VBA?
Не следует хвататься за VBA только потому, что эта аббревиатура то тут, то там впечатляюще произносится во время служебных вечеринок, Вам следует ближе познакомиться с VBA, если только вы хотите лучше приспособить свое программное обеспечение к тем запросам, которые выдвигаете вы или другие пользователи.
С помощью VBA вы можете по своему усмотрению изменить внешний вид или способ применения имеющихся средств приложения и даже добавить свои, совершенно новые возможности. Вот несколько примеров, где VBA окажется наилучшим выбором.
* Возможность, которую вам приходится часто использовать, оказывается спрятанной где-то в глубинах диалоговых окон. Почему бы тогда не поместить соответствующую команду в виде кнопки на панель инструментов, чтобы вызывать команду одним щелчком? А еще лучше, если бы и сама эта кнопка появлялась только тогда, когда команда действительно может понадобиться!
* Вам часто приходится повторять один и тот же набор команд. Не предпочтете ли вы иметь программу, которая запомнит все необходимые для этого шаги и позволит запускать сразу всю последовательность одной командой?
* Ваше программное обеспечение просто не имеет пары-тройки возможностей, которые вам совершенно необходимы. Почему бы вам не добавить недостающие команды самостоятельно?
VBA позволяет выполнить любую из вышеприведенных модификаций приложения; более того, с помощью VBA вы можете создавать свои законченные и полностью работоспособные программы. Ниже, в разделе Подробнее о том, что можно сделать в VBA, эти возможности обсуждаются более детально.
Кстати, одно из преимуществ VBA-стандарта объясняется тем, что вам нужно установить всего лишь одну копию тех файлов поддержки, которые потребуются при работе с VBA в любом из приложений. При стандартной установке все DLL файлы (библиотеки динамической компоновки), как и другие необходимые для VBA файлы, размещаются в папке Program FilesCommon FilesMicrosoft SharedWBA.
Читайте также
Что и зачем
Что и зачем В наборе скриптов управление системой NeTAMS появилось два новых скрипта — управления карточками, и активации карточек пользователем. Владелец (администратор) сети, в которой установлен и работает NeTAMS+модуль биллинга, генерирует базу карточкек
Зачем нужен Radmin
Зачем нужен Radmin Radmin — это сокращение от Remote Administrator, что дословно переводится как удаленный администратор. Да, существуют такие программы, которые позволяют нам, находясь за своим компьютером, видеть рабочий стол другого, и не только видеть, но и управлять его мышью и
1.5.2. Зачем нужны группы
1.5.2. Зачем нужны группы Предположим, что в системе зарегистрировано несколько пользователей- den, lena и guest. Первые два пользователя работают над одним проектом, поэтому их целесообразно поместить в одну группу.Но группы нужны не только для косметики. При создании
Так зачем же возражать?
Так зачем же возражать? Пока эти примеры не улетучились из вашей головы, я приведу список преимуществ, которые дает использование аргументов для обмена информацией между процедурами.* При чтении программного кода процедуры именно аргументы ясно указывают, какие
Зачем Вам нужна PGP?
Зачем Вам нужна PGP? Вы можете планировать политическую кампанию, обсуждать ваши налоги, или заниматься разными незаконными делами. Или вы можете делать что-либо, чувствуя, что это не должно быть запрещено, однако является таковым. Что бы это ни было, вы не желаете, чтобы
Зачем я создал PGP
Зачем я создал PGP «Всё, что ты делаешь, будет незначительно, но очень важно, что ты делаешь это» — Махатма Ганди Это дело личное, секретное и исключительно ваше. Вы можете планировать предвыборную кампанию, обсуждать налоги, вести тайный роман. А возможно вы общаетесь с
Что и зачем?
Что и зачем? Автор: Потребеников ЮрийВкратце расскажу о нашем участии в цикле экспериментов под общим индексом NA48 в ЦЕРНе, нацеленном на поиск прямого нарушения пространственно-зарядовой четности (CP-нарушения) в распадах каонов. Начало сотрудничеству в этой чрезвычайно
Что это такое и зачем оно вам
Что это такое и зачем оно вам У Интернета есть много различных определений, в том числе и таких, которые могут только напугать. Я предпочитаю следующее: « Интернет – это огромное хранилище информации, которая содержится на разных компьютерах по всему миру, а также способы
Зачем оптимизировать BIOS?
Зачем оптимизировать BIOS? Несмотря на то, что BIOS функционирует только в интервале между включением компьютера и активацией операционной системы, ее настройки будут действовать постоянно, пока работает ваша система. Любые параметры, заданные в BIOS, существенно влияют на
«Зачем мне все это?»
«Зачем мне все это?» Для расширения тренинга я рекомендую активную яркую программу вознаграждений. Вы должны объявлять сотрудникам, кто отличился, выявив и предотвратив атаку социнженера или добился большого успеха в освоении программы безопасности и осведомленности.
Зачем нам чемпионы по программированию?
Зачем нам чемпионы по программированию? Автор: Анатолий ШалытоОлимпиады школьников по математике проходят в нашей стране с 1934 года, когда в Ленинграде состоялась первая из них. Для многих школьников, особенно победителей олимпиад высокого уровня, участие в этих
Visual Basic
Microsoft Visual Basic — язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемое корпорацией Microsoft. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка BASIC, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Интегрированная среда разработки VB включает инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса, а также инструменты для отладки приложений.
Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows. Множество готовых компонентов, поставляемых вместе со средой, призваны помочь программисту сразу же начать разрабатывать бизнес-логику приложения, не отвлекая его внимание на написание кода запуска программы, подписки на события и других механизмов, которые VB реализует автоматически.
Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3. Окончательное признание как полноценного средства программирования для Windows — при выходе версии 5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом.
Содержание
История развития [ ]
Visual Basic 1.0 для MS-DOS. Дизайнер форм
Visual Basic 1.0 для MS-DOS. Редактор кода
Visual Basic 1.0 для Windows
Элементы языка [ ]
Типы данных [ ]
Переменные в Visual Basic объявляются оператором Dim после которого указывается ключевое слово As и тип переменной. Если тип опущен, то переменная объявляется как Variant. Если не указать конструкцию Option Explicit в разделе деклараций, то явного объявления переменных не требуется и они автоматически будут созданы при первом использовании. Данное поведение может привести к снижению скорости выполнения программы, так как необъявленные переменные будут иметь тип Variant, а также возможны логические ошибки связанные с неверным вводом имени имеющейся переменной или риска конфликтов в приложении, когда область определения переменной не совсем ясна.
Таблица основных типов Visual Basic 6.0
Операторы [ ]
Язык Visual Basic содержит множество операторов, которые отвечают за арифметические операции, операции сравнения и присвоения, а также конкатенации.
Управляющие конструкции [ ]
Оператор ветвления [ ]
Оператор выбора [ ]
Пример: вывод различных сообщений в зависимости от значения переменной
Автоматизация рутины в Microsoft Excel при помощи VBA
В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.
VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.
Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.
Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.
Поэтому, увы, будем учить Visual Basic.
Чуть-чуть подготовки и постановка задачи
Итак, поехали. Открываем Excel.
Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.
Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):
То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).
Результат, которого хотим добиться, выглядит примерно так:
Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?
Кодим
Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».
И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».
Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:
Напишем Hello World:
Sub FormatPrice()
MsgBox «Hello World!»
End Sub
И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.
Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.
Примеры синтаксиса
Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i
Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x
On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne
ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок
‘ Циклы бывает, какие захотите
Do While True
Exit Do
Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select
Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.
Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.
Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.
Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.
Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.
Кодим много и под Excel
В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.
Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub
Работа с диапазонами ячеек
Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.
Примеры работы с Range
Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»
Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:
Для упрощения работы рекомендую определить следующие функции-сокращения:
Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function
Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».
Глобальные переменные
Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3
FormatPrice
Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String
Теперь надо заполнить массив Groups:
На месте многоточия
И создать заголовки:
На месте многоточия в предыдущем куске
For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2
Не забудем про процедуру AddHeader:
Перед FormatPrice
Теперь надо перенести всякую информацию в result
Подогнать столбцы по ширине и выбрать лист result для показа результата
После цикла в конце FormatPrice
Sheets( «Result» ).Activate
Columns.AutoFit
Всё. Можно любоваться первой версией.
Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:
Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:
Поэтому чуть-чуть меняем код с добавлением стиля границ:
Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub
Осталось лишь добится пропусков перед началом новой группы. Это легко:
В начале FormatPrice
Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String
В цикле расстановки заголовков
If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer
В точности то, что и хотели.
Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.
Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.
Спасибо за внимание.
Буду рад конструктивной критике в комментариях.
UPD: Перезалил пример на Dropbox и min.us.
UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.
- Как морские свинки переносят жару
- Как клеить плитку на дсп