Что такое vba скрипт excel

Время на прочтение
7 мин

Количество просмотров 312K

Приветствую всех.

В этом посте я расскажу, что такое 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».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Sub FormatPrice()End Sub

Напишем Hello World:

Sub FormatPrice()
    MsgBox "Hello World!"
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

' Процедура. Ничего не возвращает
' Перегрузка в VBA отсутствует
Sub foo(a As String, b As String)
    ' Exit Sub ' Это значит "выйти из процедуры"
    MsgBox a + ";" + b
End Sub' Функция. Вовращает Integer
Function LengthSqr(x As Integer, y As IntegerAs Integer
    ' Exit Function
    LengthSqr = x * x + y * y
End FunctionSub FormatPrice()
    Dim s1 As String, s2 As String
    s1 = "str1"
    s2 = "str2"
    If s1 <> s2 Then
        foo "123""456" ' Скобки при вызове процедур запрещены
    End IfDim 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 iDim x As Double
    x = Val("1.234"' Парсинг чисел
    x = x + 10
    MsgBox xOn Error Resume Next ' Обработка ошибок - игнорировать все ошибки
    x = 5 / 0
    MsgBox xOn Error GoTo Err ' При ошибке перейти к метке Err
    x = 5 / 0
    MsgBox "OK!"
    GoTo ne

Err:
    MsgBox 

"Err!"

ne:

On Error GoTo 0 ' Отключаем обработку ошибок

    ' Циклы бывает, какие захотите
    Do While True
        Exit DoLoop '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' Двухмерный массив.
    ' Можно также менять размеры командой ReDim (Preserve) - см. google
    Dim arr(1 to 10, 5 to 6) As Integer
    arr(1, 6) = 8Dim coll As New Collection
    Dim coll2 As Collection
    coll.Add "item""key"
    Set coll2 = coll ' Все присваивания объектов должны производится командой Set
    MsgBox coll2("key")
    Set coll2 = New Collection
    MsgBox coll2.Count
End Sub

Грабли-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, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As IntegerAs String
    GetCol = Chr(Asc("A") + Col)
End FunctionFunction GetCellS(Sheet As String, Col As Integer, Row As IntegerAs Range
    Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row))
End FunctionFunction GetCell(Col As Integer, Row As IntegerAs Range
    Set GetCell = Range(GetCol(Col) + CStr(Row))
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

    Sheets(

"data").Activate
    I = 2
    Do While True
        If GetCell(0, I).Value = "" Then Exit Do
        ' ...
        I = I + 1
    Loop
End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer
For I2 = 1 To GroupsCount
    Groups(I2) = GetCell(I2, I)
Next I2
' ...
For I2 = 1 To GroupsCount ' VB не умеет копировать массивы
    PrGroups(I2) = Groups(I2)
Next I2
I =  I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

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

Sub AddHeader(Ty As Integer, Name As String)
    GetCellS("result", 1, CurRow).Value = Name
    CurRow = CurRow + 1
End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount - 1
    GetCellS("result", I2, CurRow).Value = GetCell(I2, I)
Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets("Result").Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Sub AddHeader(Ty As Integer, Name As String)
    Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow)).Merge
    ' Чтобы не заводить переменную и не писать каждый раз длинный вызов
    ' можно воспользоваться блоком With
    With GetCellS("result", 0, CurRow)
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        Select Case Ty
        Case 1 ' Тип
            .Font.Bold = True
            .Font.Size = 16
        Case 2 ' Производитель
            .Font.Size = 12
        End Select
        .HorizontalAlignment = xlCenter
    End With
    CurRow = CurRow + 1
End Sub

Уже лучше:

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Sub AddHeader(Ty As Integer, Name As String)
    With Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow))
        .Merge
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        .HorizontalAlignment = xlCenterSelect 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) — тут скобки нужны постоянно.

Excel VBA Tutorial – How to Write Code in a Spreadsheet Using Visual Basic

Introduction

This is a tutorial about writing code in Excel spreadsheets using Visual Basic for Applications (VBA).

Excel is one of Microsoft’s most popular products. In 2016, the CEO of Microsoft said  «Think about a world without Excel. That’s just impossible for me.” Well, maybe the world can’t think without Excel.

  • In 1996, there were over 30 million users of Microsoft Excel (source).
  • Today, there are an estimated 750 million users of Microsoft Excel. That’s a little more than the population of Europe and 25x more users than there were in 1996.

We’re one big happy family!

In this tutorial, you’ll learn about VBA and how to write code in an Excel spreadsheet using Visual Basic.

Prerequisites

You don’t need any prior programming experience to understand this tutorial. However, you will need:

  • Basic to intermediate familiarity with Microsoft Excel
  • If you want to follow along with the VBA examples in this article, you will need access to Microsoft Excel, preferably the latest version (2019) but Excel 2016 and Excel 2013 will work just fine.
  • A willingness to try new things

Learning Objectives

Over the course of this article, you will learn:

  1. What VBA is
  2. Why you would use VBA
  3. How to get set up in Excel to write VBA
  4. How to solve some real-world problems with VBA

Important Concepts

Here are some important concepts that you should be familiar with to fully understand this tutorial.

Objects: Excel is object-oriented, which means everything is an object — the Excel window, the workbook, a sheet, a chart, a cell. VBA allows users to manipulate and perform actions with objects in Excel.

If you don’t have any experience with object-oriented programming and this is a brand new concept, take a second to let that sink in!

Procedures: a procedure is a chunk of VBA code, written in the Visual Basic Editor, that accomplishes a task. Sometimes, this is also referred to as a macro (more on macros below). There are two types of procedures:

  • Subroutines: a group of VBA statements that performs one or more actions
  • Functions: a group of VBA statements that performs one or more actions and returns one or more values

Note: you can have functions operating inside of subroutines. You’ll see later.

Macros: If you’ve spent any time learning more advanced Excel functionality, you’ve probably encountered the concept of a “macro.” Excel users can record macros, consisting of user commands/keystrokes/clicks, and play them back at lightning speed to accomplish repetitive tasks. Recorded macros generate VBA code, which you can then examine. It’s actually quite fun to record a simple macro and then look at the VBA code.

Please keep in mind that sometimes it may be easier and faster to record a macro rather than hand-code a VBA procedure.

For example, maybe you work in project management. Once a week, you have to turn a raw exported report from your project management system into a beautifully formatted, clean report for leadership. You need to format the names of the over-budget projects in bold red text. You could record the formatting changes as a macro and run that whenever you need to make the change.

What is VBA?

Visual Basic for Applications is a programming language developed by Microsoft. Each software program in the Microsoft Office suite is bundled with the VBA language at no extra cost. VBA allows Microsoft Office users to create small programs that operate within Microsoft Office software programs.

Think of VBA like a pizza oven within a restaurant. Excel is the restaurant. The kitchen comes with standard commercial appliances, like large refrigerators, stoves, and regular ole’ ovens — those are all of Excel’s standard features.

But what if you want to make wood-fired pizza? Can’t do that in a standard commercial baking oven. VBA is the pizza oven.

Pizza in a pizza oven

Yum.

Why use VBA in Excel?

Because wood-fired pizza is the best!

But seriously.

A lot of people spend a lot of time in Excel as a part of their jobs. Time in Excel moves differently, too. Depending on the circumstances, 10 minutes in Excel can feel like eternity if you’re not able to do what you need, or 10 hours can go by very quickly if everything is going great. Which is when you should ask yourself, why on earth am I spending 10 hours in Excel?

Sometimes, those days are inevitable. But if you’re spending 8-10 hours everyday in Excel doing repetitive tasks, repeating a lot of the same processes, trying to clean up after other users of the file, or even updating other files after changes are made to the Excel file, a VBA procedure just might be the solution for you.

You should consider using VBA if you need to:

  • Automate repetitive tasks
  • Create easy ways for users to interact with your spreadsheets
  • Manipulate large amounts of data

Getting Set Up to Write VBA in Excel

Developer Tab

To write VBA, you’ll need to add the Developer tab to the ribbon, so you’ll see the ribbon like this.

VBA developer tab

To add the Developer tab to the ribbon:

  1. On the File tab, go to Options > Customize Ribbon.
  2. Under Customize the Ribbon and under Main Tabs, select the Developer check box.

After you show the tab, the Developer tab stays visible, unless you clear the check box or have to reinstall Excel. For more information, see Microsoft help documentation.

VBA Editor

Navigate to the Developer Tab, and click the Visual Basic button. A new window will pop up — this is the Visual Basic Editor. For the purposes of this tutorial, you just need to be familiar with the Project Explorer pane and the Property Properties pane.

VBA editor

Excel VBA Examples

First, let’s create a file for us to play around in.

  1. Open a new Excel file
  2. Save it as a macro-enabled workbook (. xlsm)
  3. Select the Developer tab
  4. Open the VBA Editor

Let’s rock and roll with some easy examples to get you writing code in a spreadsheet using Visual Basic.

Example #1: Display a Message when Users Open the Excel Workbook

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don’t paste!):

Sub Auto_Open()
MsgBox («Welcome to the XYZ Workbook.»)
End Sub

Save, close the workbook, and reopen the workbook. This dialog should display.

Welcome to XYZ notebook message example

Ta da!

How is it doing that?

Depending on your familiarity with programming, you may have some guesses. It’s not particularly complex, but there’s quite a lot going on:

  • Sub (short for “Subroutine): remember from the beginning, “a group of VBA statements that performs one or more actions.”
  • Auto_Open: this is the specific subroutine. It automatically runs your code when the Excel file opens — this is the event that triggers the procedure. Auto_Open will only run when the workbook is opened manually; it will not run if the workbook is opened via code from another workbook (Workbook_Open will do that, learn more about the difference between the two).
  • By default, a subroutine’s access is public. This means any other module can use this subroutine. All examples in this tutorial will be public subroutines. If needed, you can declare subroutines as private. This may be needed in some situations. Learn more about subroutine access modifiers.
  • msgBox: this is a function — a group of VBA statements that performs one or more actions and returns a value. The returned value is the message “Welcome to the XYZ Workbook.”

In short, this is a simple subroutine that contains a function.

When could I use this?

Maybe you have a very important file that is accessed infrequently (say, once a quarter), but automatically updated daily by another VBA procedure. When it is accessed, it’s by many people in multiple departments, all across the company.

  • Problem: Most of the time when users access the file, they are confused about the purpose of this file (why it exists), how it is updated so often, who maintains it, and how they should interact with it. New hires always have tons of questions, and you have to field these questions over and over and over again.
  • Solution: create a user message that contains a concise answer to each of these frequently answered questions.

Real World Examples

  • Use the MsgBox function to display a message when there is any event: user closes an Excel workbook, user prints, a new sheet is added to the workbook, etc.
  • Use the MsgBox function to display a message when a user needs to fulfill a condition before closing an Excel workbook
  • Use the InputBox function to get information from the user

Example #2: Allow User to Execute another Procedure

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don’t paste!):

Sub UserReportQuery()
Dim UserInput As Long
Dim Answer As Integer
UserInput = vbYesNo
Answer = MsgBox(«Process the XYZ Report?», UserInput)
If Answer = vbYes Then ProcessReport
End Sub

Sub ProcessReport()
MsgBox («Thanks for processing the XYZ Report.»)
End Sub

Save and navigate back to the Developer tab of Excel and select the “Button” option. Click on a cell and assign the UserReportQuery macro to the button.

Now click the button. This message should display:

Process the XYZ report message example

Click “yes” or hit Enter.

Thanks for processing the XYZ report message example

Once again, tada!

Please note that the secondary subroutine, ProcessReport, could be anything. I’ll demonstrate more possibilities in example #3. But first…

How is it doing that?

This example builds on the previous example and has quite a few new elements. Let’s go over the new stuff:

  • Dim UserInput As Long: Dim is short for “dimension” and allows you to declare variable names. In this case, UserInput is the variable name and Long is the data type. In plain English, this line means “Here’s a variable called “UserInput”, and it’s a Long variable type.”
  • Dim Answer As Integer: declares another variable called “Answer,” with a data type of Integer. Learn more about data types here.
  • UserInput = vbYesNo: assigns a value to the variable. In this case, vbYesNo, which displays Yes and No buttons. There are many button types, learn more here.
  • Answer = MsgBox(“Process the XYZ Report?”, UserInput): assigns the value of the variable Answer to be a MsgBox function and the UserInput variable. Yes, a variable within a variable.
  • If Answer = vbYes Then ProcessReport: this is an “If statement,” a conditional statement, which allows us to say if x is true, then do y. In this case, if the user has selected “Yes,” then execute the ProcessReport subroutine.

When could I use this?

This could be used in many, many ways. The value and versatility of this functionality is more so defined by what the secondary subroutine does.

For example, maybe you have a file that is used to generate 3 different weekly reports. These reports are formatted in dramatically different ways.

  • Problem: Each time one of these reports needs to be generated, a user opens the file and changes formatting and charts; so on and so forth. This file is being edited extensively at least 3 times per week, and it takes at least 30 minutes each time it’s edited.
  • Solution: create 1 button per report type, which automatically reformats the necessary components of the reports and generates the necessary charts.

Real World Examples

  • Create a dialog box for user to automatically populate certain information across multiple sheets
  • Use the InputBox function to get information from the user, which is then populated across multiple sheets

Example #3: Add Numbers to a Range with a For-Next Loop

For loops are very useful if you need to perform repetitive tasks on a specific range of values — arrays or cell ranges. In plain English, a loop says “for each x, do y.”

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don’t paste!):

Sub LoopExample()
Dim X As Integer
For X = 1 To 100
Range(«A» & X).Value = X
Next X
End Sub

Save and navigate back to the Developer tab of Excel and select the Macros button. Run the LoopExample macro.

This should happen:

For-Next loop results

Etc, until the 100th row.

How is it doing that?

  • Dim X As Integer: declares the variable X as a data type of Integer.
  • For X = 1 To 100: this is the start of the For loop. Simply put, it tells the loop to keep repeating until X = 100. X is the counter. The loop will keep executing until X = 100, execute one last time, and then stop.
  • Range(«A» & X).Value = X: this declares the range of the loop and what to put in that range. Since X = 1 initially, the first cell will be A1, at which point the loop will put X into that cell.
  • Next X: this tells the loop to run again

When could I use this?

The For-Next loop is one of the most powerful functionalities of VBA; there are numerous potential use cases. This is a more complex example that would require multiple layers of logic, but it communicates the world of possibilities in For-Next loops.

Maybe you have a list of all products sold at your bakery in Column A, the type of product in Column B (cakes, donuts, or muffins), the cost of ingredients in Column C, and the market average cost of each product type in another sheet.

You need to figure out what should be the retail price of each product. You’re thinking it should be the cost of ingredients plus 20%, but also 1.2% under market average if possible. A For-Next loop would allow you to do this type of calculation.

Real World Examples

  • Use a loop with a nested if statement to add specific values to a separate array only if they meet certain conditions
  • Perform mathematical calculations on each value in a range, e.g. calculate additional charges and add them to the value
  • Loop through each character in a string and extract all numbers
  • Randomly select a number of values from an array

Conclusion

Now that we’ve talked about pizza and muffins and oh-yeah, how to write VBA code in Excel spreadsheets, let’s do a learning check. See if you can answer these questions.

  • What is VBA?
  • How do I get set up to start using VBA in Excel?
  • Why and when would you use VBA?
  • What are some problems I could solve with VBA?

If you have a fair idea of how to you could answer these questions, then this was successful.

Whether you’re an occasional user or a power user, I hope this tutorial provided useful information about what can be accomplished with just a bit of code in your Excel spreadsheets.

Happy coding!

Learning Resources

  • Excel VBA Programming for Dummies, John Walkenbach
  • Get Started with VBA, Microsoft Documentation
  • Learning VBA in Excel, Lynda

A bit about me

I’m Chloe Tucker, an artist and developer in Portland, Oregon. As a former educator, I’m continuously searching for the intersection of learning and teaching, or technology and art. Reach out to me on Twitter @_chloetucker and check out my website at chloe.dev.



Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Содержание

  • 1 Excel VBA Macro script
  • 2 Создаем собственную библиотеку Excel макросов — Personal.xlsb
      • 2.0.1 Чуть-чуть лирики
      • 2.0.2 Собственно, код
  • 3 Что такое VBA
  • 4 Объекты, коллекции, свойства и методы
  • 5 Как начать
  • 6 Макросы в Excel
  • 7 Пример 1
  • 8 Пример 2
  • 9 Пример 3
  • 10 Пример 4
      • 10.0.1 Первый способ. Скрипт «от руки».
      • 10.0.2 Второй способ. Скрипт продаж в офисных программах (Excel, Word и тд)
      • 10.0.3 Третий способ. Специальные сервисы «Конструкторы скриптов продаж»
      • 10.0.4 Полезные ссылки: 

В процессе работы неоднократно приходиться сталкиваться с табличными процессорами типа Excel. И хотя это не совсем САПР, но информацию в рамках BIM контекста хочешь не хочешь, а приходится обрабатывать, либо с помощью Базы Данных, либо в тех самых экселевских табличках. А лучше и так и эдак.

Естественно, как и во всем, что связанно с компьютером эту деятельность тоже можно изрядно упростить с помощью автоматизации. С появлением таких вещей как Pivot Tables и Power Queries — так и вовсе становится не понятно как работали с информацией до этого. Но тут мы поговорим о старых добрых ламповых макросах на VBA.

Excel VBA Macro script

Макросы в экселе пишут на VBA (Visual Basic Advance) — слегка переработанный под нужды офисного пакета старый добрый  Бейсик, со всеми своими достоинствами и недостатоками.  Сами программы по умолчанию являются частью эксель файла. И убедится в этом можно с помощью соответствующей консоли (Microsoft Visual Basic for Application)

Добраться до них можно в любое время нажав сочетание клавишь Alt+F11

Но сначала надо включить вкладку Developers в стандартной ленте экселя.

как сделать скрипт в excel

Для этого:

  1. Ннаводим курсор на ленту и нажимаем Правую Клавишу Мыши (ПКМ)
  2. В открывшемся списке выбираем — Customize the Ribbon (Настройка Ленты)
  3. Ищем как показано на скриншоте пункт Developer (Разработка) и нажимаем чтобы появилась галочка
  4. Ок.

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

— Visual Basic — собственно уже обусжденная выше консоль для работы со скриптами.

— Macos — список доступных макросов для использования.

— Record Macro — эта кнопка позволяет включить запись ваших  действий с табличным редактором.

Ну и дальше порядок работы довольно простой — запускаете запись макроса, производите необходимые манипуляции с данными, останавливаете запись (той же кнопкой что и включили), идете в редактор, правите если необходимо. Потом с помощью списка макросов вызываете вновь созданный макрос в любое удобное время.

Однако есть нюанс. Созданный макроскрипт будет по умолчанию доступен только в одном эксель файле. Скопировать его в другой — конечно можно, но довольно заморочно. Есть ли выход из этой ситуации? Конечно!

Создаем собственную библиотеку Excel макросов — Personal.xlsb

Для этого нам нужно создать файл Personal.xlsb. Создается он один раз, и потом автоматически подгружается Экселем, благодаря чему сохраненные в нем Скрипты и функции становятся доступны во всех ваших файлах. Другой плюс — теперь они не сохраняются в самих файлах, и соответственно можно без опаски передавать результаты за пределы компании.

Собственно смотрим на картинку:

как сделать скрипт в excel
1. Необходимо включить макрос на запись.

2. В появившемся окне в выпадающем списке выбрать пункт — Personal Macro Workbook. Если такого файла не существует — он будет создан автоматические (то что нам и нужно)

3. Запускаем скрипт на запись

4. И останавливаем её.

Готово. Теперь у нас есть файл в который наши модули и функции можно закинуть единожды, а доступны они будут сразу во всех эксель файлах. К тому же так они не утекут за пределы компании, вместе с файлами.

Небольшой топик-шпаргалка для быстрого написания скриптов для автоматической обработки документов ms office’а. А так же для помощи в преодолении синдрома чистого листа.

Как правильно заметили в недавнем топике, сама работа скрипта может быть и не быстрой, но чаще важнее сам результат, да и объёмы далеко не всегда такие большие. Зато Automation позволяет написать скрипт практически на любом языке. Здесь я выдам заготовки для JavaScript и IronPython, но, надеюсь, в комментариях найдётся место и для других языков (например, на PowerShell).

Чуть-чуть лирики

Для работы через automation нужен следующий минимум:

  • MS Office (если есть документы, то он, видимо, есть/будет установлен)
  • Интерпретатор выбранного языка (для JS, VBS и PowerShell этот пункт не актуален)
  • Ещё раз MS Office для подглядывание за генерацией кода в VBA (в записываемых макросах)

Ещё раз повторюсь. Цель — быстро написать скрипт без сложных требований (производительность, встраивание, работа без ms office и т.п.).

Собственно, код

Имхо, самый разумный вариант — это JScript или VBScript (точнее Windows script host), т.к. интерпретатор уже идёт с операционной системой, и можно раздавать скрипт друзьям/коллегам, не требуя от них никаких дополнительных действий — перетащил xls(x)-файл на скрипт в explorer’е и работа пошла:

var excel = WScript.CreateObject("Excel.Application"); var fileName = WScript.Arguments.Item(0);  try { 	main(); } catch(e) { 	// Чтобы процесс не завис в памяти 	delete excel; 	throw e; }  function main() { 	//excel.Visible = true; // Иногда хочется поспать перед экраном, где что-то происходит, но так работает дольше 	//var book  = excel.Workbooks.Add();	// Новая книга (создать) 	var book  = excel.Workbooks.Open(fileName);	// Старая книга 	var sheet = book.Worksheets.Item(1);	// (в VBA нумерация с единицы)   	// Что-то делаем 	for (var i = 1; i  Macros -> Record macro..., имя значения не имеет), открываем его код (View -> Macros -> View macros...) и делаем по образу и подобию. Сама запись макроса — просто набор действий, которые хочется автоматизировать. Например, вставить или изменить какое-то значение, поменять цвет/шрифт и т.п. Запись макроса лучше производить в отдельном документе, во избежание.  Для лучшей ориентации в мире объектов объектном мире Excel — система классов (тоже самое, но для Office 2010).  Небольшой бонус: константы для цветовых индексов.  P.S. Где-то у меня был код для работы с Automation из C++, но это уже совсем другая история :)             

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

как сделать скрипт в excel

Что такое VBA

Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.

К его достоинствам специалисты относят сравнительную легкость освоения. Как показывает практика, азами VBA могут овладеть даже пользователи, которые не имеют навыков профессионального программирования. К особенностям VBA относится выполнение скрипта в среде офисных приложений.

Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.

как сделать скрипт в excel

Объекты, коллекции, свойства и методы

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

Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.

Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.

Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.

Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.

Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.

как сделать скрипт в excel

Как начать

Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».

Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:

  • в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
  • выбирают команду Mudule;
  • сохраняют, нажав на иконку с изображением floppy disk;
  • пишут, скажем так, набросок кода.

Он выглядит следующим образом:

Sub program ()

‘Наш код

End Sub

Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.

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

За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.

Пример 1

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

Для этого:

  • открывают вкладку «Вид»;
  • переходят на пиктограмму «Макросы»;
  • жмут на «Запись макроса»;
  • заполняют открывшуюся форму.

Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.

Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.

Далее:

  • вновь переходят на строку «Макросы»;
  • в списке выбирают «Макрос 1»;
  • нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).

В результате происходит действие, которое было осуществлено в процессе записи макроса.

Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.

Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.

Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.

Пример 2

Циклы VBA помогают создавать различные макросы в Excel.

Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x2 + 3×3 – cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.

За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.

Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:

Sub programm()

x1 = 1

x2 = 10

shag = 0.1

i = 1

Do While x1 < x2 (цикл будет выполняться пока верно выражение x1 < x2)

y=x1 + x1^2 + 3*x1^3 – Cos(x1)

Cells(i, 1).Value = x1 (значение x1 записывается в ячейку с координатами (i,1))

Cells(i, 2).Value = y (значение y записывается в ячейку с координатами (i,2))

i = i + 1 (действует счетчик);

x1 = x1 + shag (аргумент изменяется на величину шага);

Loop

End Sub.

В результате запуска данного макроса в «Эксель» получаем два столбца, в первом из которых записаны значения для x, а во втором — для y.

Затем по ним строится график способом, стандартным для «Эксель».

как сделать скрипт в excel

Пример 3

Для реализации циклов в VBA Excel 2010, как и в других версиях, наряду с уже приведенной конструкцией Do While используется For.

Рассмотрим программу, которая создаст столбец. В каждой его ячейке будут записаны квадраты номера соответствующей строки. Использование конструкции For позволит записать ее очень коротко, без использования счетчика.

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

For i = 1 to 10 Next

Команда переводится на «человеческий» язык, как «Повторять от 1 до 10 с шагом один».

Если ставится задача получить столбец с квадратами, например, всех нечетных чисел из диапазона от 1 до 11, то пишем:

For i = 1 to 10 step 1 Next.

Здесь step — шаг. В данном случае он равен двум. По умолчанию отсутствие этого слова в цикле означает, что шаг единичный.

Полученные результаты нужно сохранять в ячейки с номером (i,1). Тогда при каждом запуске цикла с увеличением i на величину шага автоматически будет расти и номер у строки. Таким образом, произойдет оптимизация кода.

В целом код будет выглядеть, как:

Sub program()

For i = 1 To 10 Step 1 (можно записать просто For i = 1 To 10)

Cells(i, 1).Value = i ^ 2 (т.е. в ячейку (i,1) записывается значение квадрата i)

Next (в некотором смысле играет роль счетчика и означает еще один запуск цикла)

End Sub.

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

как сделать скрипт в excel

Пример 4

В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.

Рассмотрим конкретный случай. Предположим, необходимо создать макрос для «Эксель», чтобы в ячейку с координатами (1,1) было записано:

1, если аргумент положительный;

0, если аргумент нулевой;

-1, если аргумент отрицательный.

Создание такого макроса для «Эксель» начинается стандартным способом, через использование «горячих» клавиш Alt и F11. Далее записывается следующий код:

Sub program()

x= Cells(1, 1).Value (эта команда присваивает x значение содержимого ячейки с координатами (1, 1))

If x>0 Then Cells(1, 1).Value = 1

If x=0 Then Cells(1, 1).Value = 0

If x

09 Мар 3 способа написать и оформить скрипт продаж

Давайте разберемся, как обычно создаются скрипты продаж?

В своей практике я обычно сталкиваюсь с 3 способами написания и оформления скриптов продаж. Давайте по порядку рассмотрим эти способы. Напишите в комментариях, используете ли Вы скрипты продаж и, если ДА, то каким именно способом Вы это делаете.

Первый способ. Скрипт «от руки».

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

Это может выглядеть так:

как сделать скрипт в excel

Никаких затрат с Вашей стороны.

Но и эффективность таких скриптов оставляет желать лучшего:

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

Этот способ может быть уместен, когда Вы делаете разовые звонки каким-то клиентам и, чтобы ничего не упустить, тезисно выписываете содержание разговора.

К сожалению, такой способ часто используется во многих компаниях малого и среднего бизнеса. Обычно это бывает, когда система телефонных продаж не настроена и менеджеры делают звонки как умеют и используют те инструменты, которые знают :-).

Второй способ. Скрипт продаж в офисных программах (Excel, Word и тд)

Более продвинутый и системный подход к внедрению скриптов продаж — это составление и использование скриптов в офисных программах, таких как Excel или Word (или аналогичных).

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

как сделать скрипт в excel

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

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

Плюсы этого подхода в том, что Вам не нужно платить ежемесячную абонентскую плату за пользование сервисами. Скорее всего, у Вас и так есть Excel или Word — а это значит, что Вы можете один раз составить скрипт и начать использовать его всем отделом продаж.

Минусы — нет интеграции с CRM системами и телефонией.

Третий способ. Специальные сервисы «Конструкторы скриптов продаж»

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

Вы заходите на сайт сервиса — регистрируетесь — начинаете рисовать свой скрипт продаж.

Это может выглядеть вот так:

как сделать скрипт в excel

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

При использовании скрипта экран выглядит гораздо проще: есть фраза менеджера, есть варианты ответов клиентов. Менеджер слушает и нажимает на нужную кнопку.

как сделать скрипт в excel

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

Преимуществами таких сервисов, на мой взгляд, являются

  • удобство создания скриптов (все наглядно, скрипт в буквальном смысле можно рисовать);
  • удобство использования скриптов сотрудниками (даже новичок может легко сориентироваться);
  • продвинутая аналитика работы со скриптом (Вы сможете отслеживать, на каком этапе чаще всего заканчивается разговор с клиентом, какие возражения вызывают затруднения, какая конверсия звонков у каждого сотрудника);
  • интеграция с CRM системами и телефонией (многие конструкторы скриптов это поддерживают).

Как Вы понимаете, за такие удобства нужно платить. Обычно взимается ежемесячная абонентская плата за каждого менеджера, который пользуется системой.

В следующих статьях поподробнее расскажу о конструкторах скриптов продаж.

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

С уважением, Олег (дружить в ВК, инстаграм) 

Полезные ссылки: 

  • 5 способов больше продавать по телефону — полезная статья с конкретными рекомендациями
  • Видеокурс «Конструктор скриптов телефонных продаж» — это целый комплект материалов, подготовленный с одной целью — чтобы Вы могли за несколько часов создать полноценный скрипт продаж с учетом особенностей Вашего бизнеса.
  • Видеокурс «Клоузер: всегда закрывай сделку» — система закрытия сделок и более 40 мощных техник помогут Вам закрывать больше сделок в любом бизнесе — от мелкой розницы до крупных корпоративных продаж.
  • Бесплатный курс «Быстрый старт в продажах» — даже если Вы новичок в продажах, курс поможет Вам привлечь новых клиентов уже в течение 1 недели, построить системную работу и повысить профессионализм в области продаж.
  • Бесплатный аудит Ваших продаж! Начните с аудита Ваших продаж! Это бесплатно и полезно. Я проверю более 50 точек роста Ваших продаж и вышлю Вам PDF отчет по результатам аудита в течение 5 дней.
  • Youtube канал «ПораРасти» – подписывайтесь сейчас, чтобы получать доступ к новым материалам первыми;
  • Группа в ВК «ПораРасти» – сообщество для тех, кто хочет продавать красиво и легко, развивать собственный бизнес, приносить людям реальную пользу, а не заниматься впариванием. Присоединяйтесь сейчас! Здесь много бесплатных материалов, PDF и т.д.

Введение

Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)



    macro1.png:

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией  Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.png

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

    macro3.png

  • Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

    macro4.png

  • Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

    macro5.png

 Обычный макрос, введенный в стандартный модуль выглядит примерно так:

macro6.png

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно…

Способ 2. Запись макросов макрорекордером

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

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
  • в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.png

  • Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов — это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):

macro8.png

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

Создание кнопки для запуска макросов

Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):

macro9.gif

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

macro10.gif

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

macro11.png

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

macro12.png

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
  • В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

macro13.png

Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.

Создание пользовательских функций на VBA

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:

macro14.png

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):

macro15.png

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

macro16.png

На чтение 5 мин. Просмотров 20.7k.

Содержание

  1. Что такое VBA?
  2. Программирование объектов в VBA — свойства и методы
  3. Объекты, свойства и методы
  4. Что дальше?

Visual Basic for Application (VBA) — это язык программирования, который мы используем при написании макросов в Excel (и других программах Office). Написал макрос, запустил и сэкономил время на скучных повторяющихся задачах. Начать лучше с автоматизации небольших задач. Потом уже, набив руку, писать целые приложения и надстройки.

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

Программирование объектов в VBA — свойства и методы

VBA — это объектно-ориентированный язык программирования. Мы пишем код, который манипулирует объектами в Excel.

Объекты — это практически все, что вы можете себе представить в Excel: таблицы, диапазоны, диаграммы, сводные таблицы и т.д.

При написании кода VBA мы может читать/записывать свойства объектов или выполнять действия (методы) над объектами.

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

i = Worksheets.Count

Range("A1"). Copy Range("D1")

Range("A1").Value = 6000

Workbook("Бюджет.xls").Save

MsgBox(Worksheets(2).Name)

ActiveWorkbook.Close

Worksheets("Лист1").Name="Отчет"

Range("А1").Font.Size = 20

Worksheets.Add

Worksheets("Лист5").Delete

Ещё одно понятие, с которым вы должны познакомиться — это объектная модель Excel. Это библиотека всех объектов в Excel. Как вы можете себе представить, это огромная библиотека!

The Excel Object Model in VBA

Каждый объект имеет свои собственные свойства и методы, которые мы можем использовать. Есть три основных вещи, которые мы можем сделать со свойствами и методами.

# 1 — Чтение свойств

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

Вот несколько примеров:

i = Worksheets.Count       '(1) передаём переменной i кол-во листов в файле
MsgBox(Worksheets(2).Name) ' (2) показываем сообщение с именем 2-го листа
  1. Worksheets.Count — возвращает количество листов в активной книге.
  2. Worksheets(2).Name — возвращает имя второго по счёту листа в активном Excel-файле

# 2 — Написать свойства

Мы также можем установить или изменить свойства объектов в Excel. Обычно это делается с помощью знака равенства «=» в VBA.

Вот несколько примеров:

Range("A1").Value = 6000
Worksheets("Лист1").Name="Отчет"
Range("А1").Font.Size = 20
  1. Range(«A1»).Value = 6000 — изменяет значение в ячейке А1 на 6000.
  2. Worksheets(«Лист1″).Name=»Отчет» — изменяет имя Лист1 в активном Excel-файле на «Отчет»
  3. Range(«А1»).Font.Size = 20 — изменяет размер шрифта в ячейке А1 на 20.

# 3 — Выполнять действия с методами

Методы — это действия, которые можно выполнить с объектом.
Обычно это действия, которые вы выполняете в Excel, нажимая кнопку меню или
сочетание клавиш. Вот несколько примеров.

Range("A1"). Copy Range("D1")
Workbook("Бюджет.xls").Save
ActiveWorkbook.Close
Worksheets.Add
Worksheets("Лист5").Delete
  1. Range («A1»). Copy Range («D1») — копирует ячейку A1 и вставляет ее в ячейку D1
  2. Workbook(«Бюджет.xls»).Save — сохраняет файл Бюджет.
  3. ActiveWorkbook.Close — закрывает активную книгу.
  4. Worksheets.Add — добавляет рабочий лист перед активным листом (аналогично сочетанию клавиш Shift + F11)
  5. Worksheets(«Лист5»).Delete — удаляет Лист5 из активного Excel файла

VBA Intellisense Properties and Methods of an Object

Большинство свойств и методов содержат дополнительные параметры, которые вы можете указать для настройки вашего запроса. Оглядываясь назад на пример резки картофеля, моя жена хотела кубики 1/2 дюйма, поэтому я указал это при использовании метода вырезания.

Когда мы используем метод Worksheets.Add в Excel для добавления листа, метод Add имеет необязательные аргументы или параметры, которые можно указать, чтобы сообщить VBA: где разместить новый лист, сколько листов для вставки и какой тип листа.

VBA Arguments or Parameters of a Property or Method

Вы также
можете нажать Ctrl + I, чтобы вызвать это информационное окно с параметрами.

Объекты, свойства и методы

Объектная модель Excel — это огромная библиотека. Я кодирую VBA 10 лет и до сих пор не знаю всего. Я, вероятно, никогда не буду. Но легко получить помощь и узнать об объектах, которые вы хотите использовать.

Get Help with VBA Objects Properties and Methods

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

Вот ссылка на страницу справки для Sheets.Add Method

Кстати, сочетание клавиш для открытия редактора VB — Alt +
F11. Нажмите Alt + F11 (Function + Option + F11 на Mac 2011) в любом месте
Excel, чтобы открыть редактор VB и просмотреть модули кода.

Что дальше?

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

Читайте следующую статью:
Введение в VBA: Объектная модель VBA (Часть 2 из 3)

VBA Excel: примеры программ. Макросы в Excel

​Смотрите также​Сервис — Настройка​Макрорекордер записывает только те​ нам кнопка​Dim​ могут оказаться неверными​ упомянуть ещё один​Возвращает верхний индекс измерения​InStr(1, «Вот искомое слово»,​оба равны​Sub​Sub​ взглянуть на особенности​Кроме того, полный список​ в описании формата.​ от 1 до​ приступать к рассмотрению​Немногие знают, что первая​

VBA Excel примеры программ

Что такое VBA

​(Tools — Customize)​ действия, которые выполняются​Редактор Visual Basic​можно использовать ключевое​ и неожиданными, а​ очень важный момент.​ заданного массива.​

​ «слово»)​True​ключевое слово не​, то в выделенном​ и отличия этих​ встроенных функций VBA​и пр.​ 11, то пишем:​ конкретных примеров программ​ версия популярного продукта​и перейдите на​

​ в пределах окна​(Visual Basic Editor)​ слово​ найти причину ошибок​ Если мы объявляем​Примечание:​возвращает число 13.​, в противном случае​ вставлено, то по​ диапазоне ячеек будет​ двух типов процедур.​ с примерами можно​Изучение свойств этих функций​For i = 1​ VBA Excel. Лучше​ Microsoft Excel появилась​ вкладку​ Microsoft Excel. Как​:​Private​ будет гораздо сложнее.Возможно​ переменную, но не​

функции VBA

Объекты, коллекции, свойства и методы

​Для многомерных массивов​InStr(14, «Вот искомое слово,​ возвратит​ умолчанию для процедуры​ установлен размер шрифта,​ Далее приведены краткие​ найти на сайте​ и их применение​ to 10 step​ всего начать с​ в 1985 году.​Команды (Commands)​ только вы закрываете​

​К сожалению, интерфейс редактора​, которое укажет на​ также, что макрос​ присваиваем ей какое-либо​ в качестве необязательного​ а вот еще​False​ устанавливается свойство​ заданный пользователем.​ обсуждения процедур VBA​

​ Visual Basic Developer​ позволит значительно расширить​ 1 Next.​ самых элементарных кодов.​ С тех пор​. В категории​ Excel или переключаетесь​ VBA и файлы​

​ то, что данная​ будет «успешно» выполнен.​ значение, то она​ аргумента может быть​ искомое слово», «слово»)​.​

​Public​Следующая процедура похожа на​Function​ Centre.​ сферу применения «Эксель».​Здесь step — шаг.​Задача: написать программу, которая​ он пережил несколько​Макросы​ в другую программу​ справки не переводятся​ переменная предназначена для​ В результате ошибка​ инициализируется значением по​ указано, индекс какого​

​возвращает число 38.​Or​(то есть она​ только что рассмотренную,​

циклы VBA

Как начать

​и​В Excel Visual Basic​Попробуем перейти к решению​ В данном случае​ будет копировать значение​ модификаций и востребован​

​легко найти веселый​ — запись останавливается.​ компанией Microsoft на​ использования только в​ останется незамеченной и​

  • ​ умолчанию:​ именно измерения нужо​Примечание:​Операция дизъюнкции, логический оператор​ будет доступна везде​
  • ​ но на этот​
  • ​Sub​ набор команд, выполняющий​ более сложных задач.​
  • ​ он равен двум.​ содержимое одной ячейки​

​ у миллионов пользователей​

​ желтый «колобок» -​

​Макрорекордер может записать только​

​ русский язык, поэтому​

​ текущем модуле.​ работа продолжится с​• текстовые строки​ возвратить. Если не​Аргумент-число может быть​ИЛИ​ в данном проекте​ раз, вместо изменения​

​и показаны простые​ определённую задачу, помещается​ Например:​ По умолчанию отсутствие​ и затем записывать​ по всему миру.​Настраиваемую кнопку​ те действия, для​ с английскими командами​Для объявления констант также​ неверными данными!​ — инициализируются пустыми​ указано, то по​ не задан, в​

Макросы в Excel

​. Например, выражение​ VBA). В этом​ размера, применяется полужирное​ примеры.​ в процедуру​Дан бумажный документ отчета​ этого слова в​ в другую.​ При этом многие​(Custom button)​ которых есть команды​ в меню и​ можно использовать ключевые​В связи с этим,​ строками;​ умолчанию равно 1.​ таком случае поиск​A Or B​ состоит отличие от​ начертание шрифта в​

Пример 1

​Редактор VBA распознаёт процедуру​Function​ фактического уровня издержек​ цикле означает, что​Для этого:​

​ работают лишь с​

  • ​:​
  • ​ меню или кнопки​
  • ​ окнах придется смириться:​
  • ​ слова​

​ неверный тип данных​• числа —​Year​ начинается с первого​возвратит​ объявления переменных, которые​ выделенном диапазоне ячеек.​Function​(Функция) или​

​ предприятия. Требуется:​ шаг единичный.​открывают вкладку «Вид»;​ малой толикой возможностей​Перетащите ее к себе​ в Excel. Программист​Макросы (т.е. наборы команд​Public​ желательно обнаруживать и​

​ значением 0;​

  • ​Возвращает целое число, соответствующее​ символа строки, заданной​
  • ​True​ по умолчанию бывают​
  • ​ Это пример процедуры​, когда встречает группу​Sub​

​разработать его шаблонную часть​Полученные результаты нужно сохранять​переходят на пиктограмму «Макросы»;​ этого табличного процессора​

​ на панель инструментов​ же может написать​ на языке VBA)​и​ как можно раньше​• переменные типа​ году в заданной​ во втором аргументе​, если​Private​Sub​ команд, заключённую между​

​(Подпрограмма). Главное отличие​ посредством табличного процессора​ в ячейки с​жмут на «Запись макроса»;​ и даже не​ и затем щелкните​ макрос, который делает​ хранятся в программных​Private​ исправлять такие ошибки​Boolean​ дате.Пример:​

​ функции.​A​.​, которой не передаются​ вот такими открывающим​ между процедурами​ «Эксель»;​

Пример 2

​ номером (i,1). Тогда​заполняют открывшуюся форму.​ догадываются, как им​

​ по ней правой​ то, что Excel​ модулях. В любой​, но не вместо​ в коде. По​— False;​Year(«29/01/2015»)​Int​или​Если нужно завершить выполнение​

​ никакие аргументы:​ и закрывающим операторами:​Function​составить программу VBA, которая​ при каждом запуске​Для простоты в поле​ могло бы облегчить​ кнопкой мыши. В​ никогда не умел​

​ книге Excel мы​ ключевого слова​ этим причинам при​• даты —​возвращает значение 2015.​Возвращает целую часть заданного​B​

​ VBA процедуры​

​Sub Format_Centered_And_Bold() Selection.HorizontalAlignment​

​Function … End​

​и​

​ будет запрашивать исходные​

​ цикла с увеличением​ «Имя макроса» оставляют​ жизнь умение программирования​ контекстом меню можно​ (сортировку по цвету,​

​ можем создать любое​Const​

​ написании макроса VBA​ 30 декабря 1899.​Данный список включает в​ числа.​

​равны​Function​ = xlCenter Selection.VerticalAlignment​ Function​

​Sub​ данные для ее​

​ i на величину​ «Макрос1», а в​ в Excel.​

​ назначить кнопке макрос,​

​ например или что-то​

​ количество программных модулей​, а вместе с​ рекомендуется объявлять все​Прежде чем использовать переменную​ себя только избранные​Пример:​True​или​

​ = xlCenter Selection.Font.Bold​Как упоминалось ранее, процедура​состоит в том,​

программирование в Excel

Пример 3

​ заполнения, осуществлять необходимые​ шага автоматически будет​ поле «Сочетание клавиш»​Программирование в Excel осуществляется​ выбрать другой значок​ подобное).​ и разместить там​

​ ним.​ переменные.​ или константу, её​ наиболее часто употребляемые​Int(5.79)​, и возвратит​Sub​ = True End​Function​

​ что процедура​ расчеты и заполнять​ расти и номер​ вставляют, например, hh​ посредством языка программирования​ и имя:​Если во время записи​ наши макросы. Один​

​В следующих примерах показано​Оператор​

​ нужно объявить. Для​ встроенные функции Excel​возвращает результат 5.​False​, не дожидаясь её​

​ Sub​в VBA (в​Function​ ими соответствующие ячейки​ у строки. Таким​ (это значит, что​

​ Visual Basic for​Кнопка на панели быстрого​ макроса макрорекордером вы​

​ модуль может содержать​ использование ключевых слов​Option Explicit​ этого в макрос​ Visual Basic. Исчерпывающий​Isdate​, если​

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

​Public​заставляет объявлять все​

​ добавляют вот такую​

​ список функций VBA,​Возвращает​A​ для этого существуют​Sub​Sub​

​Sub​Рассмотрим один из вариантов​ кода.​ будет блиц-командой «Ctrl+h»).​ встроен в самый​

​ 2007 и новее​ будет записана. Однако​ Доступ ко всем​и​

​ переменные, которые будут​

​ простую строку кода:​ доступных для использования​True​и​ операторы​из другой VBA​), возвращает значение. Для​– нет.​ решения.​В целом код будет​ Нажимают Enter.​

примеры макросов VBA Excel

Пример 4

​ известный табличный процессор​Щелкните правой кнопкой мыши​ смело можете давить​ модулям осуществляется с​Private​ использованы в коде​Dim​ в макросах Excel,​, если заданное значение​B​Exit Function​ процедуры, нужно записать​ возвращаемых значений действуют​Поэтому, если требуется выполнить​Все действия осуществляются на​ выглядеть, как:​Теперь, когда уже запущена​

​ от Microsoft.​ по панели быстрого​ на кнопку отмены​ помощью окна Project​в применении к​ VBA, и при​

​Имя_Переменной​

​ можно найти на​

​ является датой, или​

​оба равны​и​ ключевое слово​ следующие правила:​ действия и получить​ стандартном листе в​

​Sub program()​

​ запись макроса, производят​К его достоинствам специалисты​ доступа в левом​ последнего действия (Undo)​ Explorer в левом​

​ переменным и к​ компиляции выделяет все​

​As​ сайте Visual Basic​

​False​

​False​

​Exit Sub​Call​Тип данных возвращаемого значения​ какой-то результат (например,​

Функции VBA

​ Excel. Резервируются свободные​For i = 1​ копирование содержимого какой-либо​ относят сравнительную легкость​ верхнем углу окна​ — во время​ верхнем углу редактора​ константам.​ не объявленные переменные​Тип_Данных​ Developer Center.​– если датой​.​. Применение этих операторов​, имя процедуры​ должен быть объявлен​

  • ​ просуммировать несколько чисел),​ ячейки для внесения​ To 10 Step​ ячейки в другую.​ освоения. Как показывает​
  • ​ Excel и выберите​ записи макроса макрорекордером​ (если его не​Option Explicit Public sVAT_Rate​ как ошибки (прежде​В показанной выше строке​Урок подготовлен для Вас​
  • ​ не является.​Not​ показано ниже на​
  • ​Sub​ в заголовке процедуры​ то обычно используется​ данных по месяцу,​ 1 (можно записать​ Возвращаются на исходную​ практика, азами VBA​ команду​ она не просто​ видно, нажмите CTRL+R).​ As Single Public​ чем будет запущено​ кода​ командой сайта office-guru.ru​Пример:​Операция отрицания, логический оператор​ примере простой процедуры​
  • ​и далее в​Function​ процедура​ году, названию компании-потребителя,​ просто For i​
  • ​ пиктограмму. Нажимают на​ могут овладеть даже​Настройка панели быстрого доступа​ возрвращает Вас в​ Программные модули бывают​ Const iMax_Count =​ выполнение кода). Применить​Имя_Переменной​Источник: http://www.excelfunctions.net/VBA-Operators-And-Functions.html​IsDate(«01/01/2015»)​НЕ​Function​ скобках аргументы процедуры.​
  • ​.​Function​ сумме издержек, их​ = 1 To​ «Запись макроса». Это​
  • ​ пользователи, которые не​ (Customise Quick Access​ предыдущее состояние, но​ нескольких типов для​ 5000 …​ этот оператор не​– это имя​
  • ​Перевел: Антон Андронов​

​возвращает​. Например, выражение​, в которой ожидается​ Это показано в​

Пример 5

​Переменная, которая содержит возвращаемое​, а для того,​ уровня, товарооборота. Так​

​ 10)​ действие означает завершение​ имеют навыков профессионального​

  • ​ Toolbar)​ и стирает последнюю​ разных ситуаций:​
  • ​В этом примере ключевое​ сложно – просто​ переменной, которая будет​Автор: Антон Андронов​True​Not A​ получение положительного аргумента​

​ примере ниже:​ значение, должна быть​

Создание шаблона

​ чтобы просто выполнить​ как количество компаний​Cells(i, 1).Value = i​ программки.​ программирования. К особенностям​:​ записанную команду на​Обычные модули​ слово​ запишите в самом​ использована в коде,​В VBA, как и​;​возвратит​ для выполнения дальнейших​Sub main() Call​ названа так же,​ какие-то действия (например,​

Переменные

​ (обществ), относительно которых​ ^ 2 (т.е.​Далее:​ VBA относится выполнение​Затем в открывшемся окне​

  • ​ VBA.​- используются в​
  • ​Public​ верху файла VBA​ а​
  • ​ в любом другом​IsDate(100)​True​
  • ​ операций. Если процедуре​ Format_Centered_And_Sized(20) End Sub​ как и процедура​

​ изменить форматирование группы​ составляется отчет, не​ в ячейку (i,1)​вновь переходят на строку​ скрипта в среде​ выберите категорию​Чтобы включить запись необходимо:​ большинстве случаев, когда​

макросы в Excel

Решение задачи с использованием программирования на VBA

​использовано для объявления​ такую строку:​Тип_Данных​ языке программирования, переменные​возвращает​, если​ передано не положительное​Если процедура​Function​

​ ячеек), нужно выбрать​ зафиксировано, ячейки для​ записывается значение квадрата​ «Макросы»;​

​ офисных приложений.​Макросы​в Excel 2003 и​ речь идет о​ переменной​

​Option Explicit​– это один​ и константы используются​False​A​ значение, то дальнейшие​Format_Centered_And_Sized​. Эту переменную не​

​ процедуру​ внесения значений по​ i)​в списке выбирают «Макрос​Недостатком программы являются проблемы,​

​и при помощи​ старше — выбрать​ макросах. Для создания​sVAT_Rate​

​Если хотите всегда вставлять​ из типов данных​ для хранения каких-либо​.​равно​ операции не могут​имеет более одного​ нужно объявлять отдельно,​Sub​ итогам и ФИО​Next (в некотором смысле​ 1»;​ связанные с совместимостью​ кнопки​ в меню​ такого модуля выберите​и константы​

VBA Excel 2010

​Option Explicit​ из таблицы, приведённой​ значений. Как и​IsError​False​ быть выполнены, поэтому​ аргумента, то они​ так как она​.​ специалиста заранее не​ играет роль счетчика​нажимают «Выполнить» (то же​ различных версий. Они​Добавить (Add)​Сервис — Макрос -​ в меню​iMax_Count​в начало каждого​ чуть ранее в​ следует из названия,​Возвращает​, или возвратит​ пользователю должно быть​ должны быть разделены​

​ всегда существует как​

fb.ru

Процедуры «Function» и «Sub» в VBA

Встроенные функции VBA

​При помощи аргументов процедурам​ резервируют. Рабочему листу​ и означает еще​ действие запускается начатием​ обусловлены тем, что​перенесите выбранный макрос​ Начать запись​Insert — Module​. Областью действия объявленных​

​ нового созданного модуля​ этой статье. Например:​ переменные могут изменяться,​

  • ​True​False​ показано сообщение об​ запятыми. Вот так:​​ неотъемлемая часть процедуры​​ VBA могут быть​​ присваивается новое название.​​ один запуск цикла)​
  • ​ сочетания клавиш «Ctrl+hh»).​ код программы VBA​ в правую половину​​(Tools — Macro -​​. В появившееся окно​
  • ​ таким образом элементов​ VBA, то это​Dim sVAT_Rate As​ константы же хранят​, если заданное значение​, если​ ошибке и процедура​​Sub main() Call​​Function​ переданы различные данные.​

​ Например, «Օтчет».​End Sub.​В результате происходит действие,​ обращается к функциональным​ окна, т.е. на​ Record New Macro)​

Пользовательские процедуры «Function» и «Sub» в VBA

​ нового пустого модуля​ будет весь текущий​ можно делать автоматически.​ Single Dim i​​ фиксированные значения.​​ является ошибкой, или​​A​​ должна быть тут​ Format_Centered_And_Sized(arg1, arg2, …)​​.​​ Список аргументов указывается​​Для написания программы автоматического​​Если все сделано правильно,​ которое было осуществлено​​ возможностям, которые присутствуют​​ панель быстрого доступа:​​в Excel 2007 и​​ можно вводить команды​

​ проект.​ Для этого необходимо​ As Integer​Например, константа​False​равно​​ же завершена:​​ End Sub​Это отлично проиллюстрировано в​ при объявлении процедуры.​ заполнения шаблона, необходимо​ в том числе​ в процессе записи​​ в новой версии​​Кнопка на листе​

Аргументы

​ новее — нажать​ на VBA, набирая​Это значит, что​ включить параметр​Аналогично объявляются константы, но​Pi​​– если ошибкой​​True​Function VAT_Amount(sVAT_Rate As​Процедура​ следующем примере.​ К примеру, процедура​ выбрать обозначения. Они​ запись и запуск​ макроса.​

​ продукта, но отсутствуют​Этот способ подходит для​ кнопку​

​ их с клавиатуры​sVAT_Rate​Require Variable Declaration​​ при объявлении констант​​хранит значение 3,14159265…​​ не является.​​.​ Single) As Single​Sub​Ниже приведён пример кода​

Необязательные аргументы

​Sub​ будут использоваться для​ макроса (см. инструкцию​Имеет смысл увидеть, как​ в старой. Также​ любой версии Excel.​Запись макроса (Record macro)​ или копируя их​и​

​в настройках редактора​ обязательно сразу указывается​ Число «Пи» не​IsMissing​В приведённой выше таблице​

​ VAT_Amount = 0​не может быть​ VBA процедуры​

​в VBA добавляет​ переменных:​​ выше), то при​​ выглядит код. Для​ к минусам относят​

​ Мы добавим кнопку​на вкладке​ из другого модуля,​iMax_Count​ VBA.​

Передача аргументов по значению и по ссылке

​ их значение. Например,​ будет изменяться в​В качестве аргумента функции​

  • ​ перечислены не все​​ If sVAT_Rate​ введена непосредственно в​Function​ заданное целое число​NN– номер текущей строки​ его вызове каждый​ этого вновь переходят​ и чрезмерно высокую​ запуска макроса прямо​Разработчик (Developer)​ с этого сайта​
  • ​будут доступны в​​Это делается так:​ вот так:​ ходе выполнения программы,​ передаётся имя необязательного​ логические операторы, доступные​Обратите внимание, что перед​ ячейку листа Excel,​, которая получает три​ (Integer) в каждую​ таблицы;​

​ раз будет получаться​​ на строку «Макросы»​​ открытость кода для​​ на рабочий лист,​​Затем необходимо настроить параметры​ или еще откуда​ любом модуле проекта.​В меню редактора Visual​Const iMaxCount =​ но все же​

​ аргумента процедуры.​ в VBA. Полный​ тем, как завершить​ ​ как это может​ аргумента типа​​ ячейку в выделенном​​TP и TF –​ столбец заданного размера​ и нажимают «Изменить»​​ изменения посторонним лицом.​​ как графический объект.​​ записываемого макроса в​​ нибудь:​
​Option Explicit Private sVAT_Rate​ Basic нажмите​ 5000 Const iMaxScore​ ​ хранить такое значение​IsMissing​​ список логических операторов​​ выполнение процедуры​ быть сделано с​Double​​ диапазоне. Передать процедуре​​ планируемый и фактический​​ (в данном случае​​ или «Войти». В​ Тем не менее​ Для этого:​​ окне​​Модуль Эта книга​

​ As Single Private​Tools​ = 100​ удобнее как константу.​возвращает​ можно найти на​​Function​​ процедурой​​(числа с плавающей​​ это число можно​ товарооборот;​

​ состоящий из 10​ результате оказываются в​​ Microsoft Office, а​​В Excel 2003 и​​Запись макроса​​- также виден​ Const iMax_Count =​>​Объявлять переменные в Excel​В то же время​True​ сайте Visual Basic​​–​​Function​​ точкой двойной точности).​​ при помощи аргумента,​SF и SP –​

VBA процедура «Function»

​ ячеек).​​ среде VBA. Собственно,​​ также IBM Lotus​ старше — откройте​:​ в левом верхнем​

​ 5000 …​Options​

​ не обязательно. По​​ мы можем использовать​​, если для рассматриваемого​ Developer Center.​​VAT_Amount​​, потому что процедура​ В результате процедура​ вот так:​

  • ​ фактическая и планируемая​В повседневной жизни сплошь​ сам код макроса​​ Symphony позволяют пользователю​​ панель инструментов​
  • ​Имя макроса​ углу редактора Visual​В этом примере для​В появившемся диалоговом окне​​ умолчанию все введённые,​​ переменную​ аргумента процедуры не​В VBA доступно множество​, в код вставлена​Sub​​ возвращает ещё одно​​Sub AddToCells(i As​

​ сумма издержек;​ и рядом возникает​

Пример VBA процедуры «Function»: Выполняем математическую операцию с 3 числами

​ находится между строками​ применять шифрование начального​​Формы​​- подойдет любое​ Basic в окне,​​ объявления переменной​​ откройте вкладку​ но не объявленные​sVAT_Rate​ передано значение.​ встроенных функций, которые​​ встроенная VBA функция​​не возвращает значение.​ число типа​ Integer) … End​

​IP и IF –​ необходимость принять то​ Sub Макрос1() и​ кода и установку​через меню​ имя на русском​ которое называется Project​

​sVAT_Rate​Editor​​ переменные в Excel​​для хранения ставки​IsNumeric​ могут быть использованы​MsgBox​ Однако, процедуры​Double​​ Sub​​ планируемый и фактически​ или иное решение​​ End Sub.​​ пароля для его​Вид — Панели инструментов​ или английском языке.​ Explorer. В этот​​и константы​​Отметьте галочкой параметр​ будут иметь тип​ НДС на покупаемые​

Вызов VBA процедуры «Function»

​Возвращает​ при написании кода.​​, которая показывает пользователю​​Sub​, равное сумме первых​Имейте в виду, что​ уровень издержек.​ в зависимости от​Если копирование было выполнено,​ просмотра.​ — Формы (View​

Вызов VBA процедуры «Function» из другой процедуры

​ Имя должно начинаться​​ модуль обычно записываются​​iMax_Count​Require Variable Declaration​Variant​ товары. Величина переменной​True​ Ниже перечислены некоторые​ всплывающее окно с​​, не имеющие аргументов​​ двух аргументов минус​ наличие аргументов для​

​Обозначим теми же буквами,​ какого-то условия. Не​ например, из ячейки​Именно с этими понятиями​ — Toolbars -​

Вызов VBA процедуры «Function» из рабочего листа

​ с буквы и​​ макросы, которые должны​​использовано ключевое слово​и нажмите​и смогут принять​sVAT_Rate​, если заданное значение​ из наиболее часто​ предупреждением.​​ и объявленные как​​ третий аргумент:​​ процедур​​ но с «приставкой»​ обойтись без них​ А1 в ячейку​ нужно разобраться тем,​

​ Forms)​

VBA процедура «Sub»

​ не содержать пробелов​ выполнятся при наступлении​​Private​​ОК​ как числовое, так​может изменяться в​ может быть рассмотрено​

​ используемых:​Урок подготовлен для Вас​

VBA процедура «Sub»: Пример 1. Выравнивание по центру и изменение размера шрифта в выделенном диапазоне ячеек

​Public​Function SumMinus(dNum1 As​​Function​​ Itog накопление итога​ и в VBA​ C1, то одна​ кто собирается работать​В Excel 2007 и​ и знаков препинания.​ каких-либо событий в​. Областью действия этих​При включенном параметре строка​

​ и текстовое значение.​ зависимости от того,​ как число, в​Функция Действие​ командой сайта office-guru.ru​(как будет показано​

​ Double, dNum2 As​​и​​ по данному столбцу.​ Excel. Примеры программ,​

​ из строк кода​ в среде VBA.​ новее — откройте​​Сочетание клавиш​​ книге (открытие или​​ элементов является текущий​​Option Explicit​​Таким образом, программист в​​ что за товар​ противном случае возвращает​Abs​Источник: http://www.excelfunctions.net/VBA-Functions-And-Subroutines.html​​ далее), будут доступны​​ Double, dNum3 As​​Sub​​ Например, ItogTP –​ где дальнейший ход​ будет выглядеть, как​ Прежде всего необходимо​

VBA процедура «Sub»: Пример 2. Выравнивание по центру и применение полужирного начертания к шрифту в выделенном диапазоне ячеек

​ выпадающий список​- будет потом​ сохранение книги, печать​ модуль.​будет автоматически вставляться​ любой момент сможет​ приобретается.​False​​Возвращает абсолютную величину заданного​​Перевел: Антон Андронов​ для пользователей рабочего​

​ Double) As Double​в VBA не​ касается столбца таблицы,​ выполнения алгоритма выбирается,​ Range(“C1”).Select. В переводе​

Вызов процедуры «Sub» в Excel VBA

Вызов VBA процедуры «Sub» из другой процедуры

​ понять, что такое​​Вставить (Insert)​​ использоваться для быстрого​ файла и т.п.):​Это значит, что​​ в начало каждого​​ использовать новую переменную​​Все переменные и константы​​.​ числа.​Автор: Антон Андронов​ листа. Таким образом,​

​ SumMinus = dNum1​ является обязательным. Для​

​ озаглавленного, как «планируемый​​ а не предопределен​​ это выглядит, как​ объект. В Excel​на вкладке​ запуска макроса. Если​

​Модуль листа​sVAT_Rate​ нового созданного модуля.​

Вызов VBA процедуры «Sub» из рабочего листа

​ (даже если она​​ относятся к определённому​​Left​Пример:​При написании кода VBA​ если рассмотренные выше​ + dNum2 -​ некоторых процедур аргументы​​ товарооборот».​​ изначально, чаще всего​​ «Диапазон(“C1”).Выделить», иными словами​​ в этом качестве​Разработчик (Developer)​​ забудете сочетание или​​- доступен через​и​​Каждая объявленная переменная или​​ не была объявлена),​ типу данных. В​Возвращает заданное количество символов​Abs(-20)​ в Excel набор​ простые процедуры​​ dNum3 End Function​​ не нужны.​Используя введенные обозначения, получаем​ используют конструкцию If​​ осуществляет переход в​​ выступают лист, книга,​ ​ вообще его не​ Project Explorer и​​iMax_Count​​ константа имеет свою​ и Excel будет​ таблице ниже приведены​

​ от начала переданной​возвращает значение 20;​​ встроенных операторов используют​​Sub​Эта очень простая VBA​

  • ​Процедуры VBA могут иметь​​ формулы для отклонений.​​ …Then (для сложных​​ VBA Excel, в​​ ячейка и диапазон.​Выберите объект​​ введете, то макрос​​ через контекстное меню​
  • ​будут доступны во​ ограниченную область действия,​ рассматривать её как​
  • ​ типы данных, используемые​​ строки. Синтаксис функции​​Abs(20)​

​ на каждом шагу.​​вставлены в модуль​​ процедура​ необязательные аргументы. Это​ Если требуется осуществить​ случаев) If …Then​

  • ​ ячейку С1.​​ Данные объекты обладают​​Кнопка (Button):​
  • ​ можно будет запустить​ листа, т.е. правой​ всех процедурах текущего​ то есть ограниченную​
  • ​ переменную типа​​ в VBA, с​​ вот такой:​возвращает значение 20.​ Эти операторы делятся​
  • ​ в редакторе Visual​​Function​​ такие аргументы, которые​ расчет в %​​ …END If.​​Активную часть кода завершает​

​ специальной иерархией, т.е.​​Затем нарисуйте кнопку на​ через меню​ кнопкой мыши по​ модуля, но не​ часть программы, в​​Variant​​ описанием и диапазоном​Left(​Chr​ на математические, строковые,​ Basic, то процедура​иллюстрирует, как данные​ пользователь может указать,​

Область действия процедуры VBA

​ имеем (F –​Рассмотрим конкретный случай. Предположим,​ команда ActiveSheet.Paste. Она​ подчиняются друг другу.​ листе, удерживая левую​​Сервис — Макрос -​​ ярлычку листа -​​ будут доступны для​​ которой эта переменная​. Однако, есть несколько​ возможных значений:​строка​

​Возвращает символ ANSI, соответствующий​ операторы сравнения и​Format_Centered_And_Bold​ ​ передаются процедуре через​ если захочет, а​​ P) / P​​ необходимо создать макрос​ означает запись содержания​Главным из них является​ кнопку мыши. Автоматически​
​ Макросы — Выполнить​ команда​ процедур, находящихся в​ ​ существует. Область действия​ причин, почему так​​Тип данных Размер​​,​ числовому значению параметра.​ логические. Далее мы​будет доступна для​ аргументы. Можно увидеть,​ если они пропущены,​ * 100, а​ для «Эксель», чтобы​

​ выделенной ячейки (в​ Application, соответствующий самой​ появится окно, где​​(Tools — Macro -​​Исходный текст (View Source)​​ других модулях.​​ зависит от того,​ поступать не следует:​ Описание Диапазон значений​длина​​Пример:​​ подробно рассмотрим каждую​ использования на рабочем​ что тип данных,​ то процедура использует​ в сумме —​ в ячейку с​ данном случае А1)​​ программе Excel. Затем​​ нужно выбрать макрос,​

Ранний выход из VBA процедур «Function» и «Sub»

​ Macros — Run)​. Сюда записывают макросы,​​Урок подготовлен для Вас​​ где было сделано​​Использование памяти и скорость​​Byte​)​Chr(10)​ группу операторов.​​ листе книги Excel,​​ возвращаемых процедурой, определён​​ для них заданные​​ (F – P).​ координатами (1,1) было​ в выделенную ячейку​​ следуют Workbooks, Worksheets,​​ который должен запускаться​или с помощью​ которые должны выполняться​ командой сайта office-guru.ru​ объявление переменной или​ вычислений.​1 байт​где​возвращает перенос строки;​Основные математические операторы VBA​ а процедура​ как​ по умолчанию значения.​

​Результаты этих вычислений можно​ записано:​ С1.​ а также Range.​

​ при щелчке по​ кнопки​ при наступлении определенных​​Источник: http://www.excelfunctions.net/VBA-Variables-And-Constants.html​​ константы. Возьмём, к​​Если не объявлять​​Положительные целые числа; часто​строка​​Chr(97)​​ перечислены в таблице​Format_Centered_And_Sized​Double​

​Возвращаясь к предыдущему примеру,​ лучше всего сразу​
​1, если аргумент положительный;​
​Циклы VBA помогают создавать​

​ Например, для обращения​

office-guru.ru

Операторы и встроенные функции VBA

Операторы Excel VBA

​ нарисованной кнопке.​Макросы (Macros)​ событий на листе​Перевел: Антон Андронов​ примеру, переменную​ переменную с указанием​ используется для двоичных​– это исходная​возвращает символ​ ниже.​

Математические операторы

​– не будет​(об этом говорят​ чтобы сделать целочисленный​

​ внести в соответствующие​0, если аргумент нулевой;​ различные макросы в​ к ячейке A1​Создание пользовательских функций или,​на вкладке​ (изменение данных в​Автор: Антон Андронов​sVAT_Rate​

​ типа данных, то​
​ данных​ строка, а​

​a​ ​В правом столбце таблицы​ ​ доступна, так как​
​ слова​ ​ аргумент функции необязательным,​ ​ ячейки таблицы «Эксель».​
​-1, если аргумент отрицательный.​ ​ Excel.​ ​ на конкретном листе​
​ как их иногда​ ​Разработчик (Developer)​ ячейках, пересчет листа,​Всем нам приходится -​, которая используется в​​ по умолчанию для​​от 0 до 255​​длина​ ​.​
​ указан приоритет операторов,​ ​ она имеет аргументы.​As Double​ его нужно объявить​Для итогов по факту​​Создание такого макроса для​​Циклы VBA помогают создавать​​ следует указать путь​​ еще называют, UDF-функций​ ​или нажав ALT+F8.​
​ копирование или удаление​ ​ кому реже, кому​ ​ функции​
​ неё будет установлен​ ​Boolean​ ​– количество возвращаемых​

Строковые операторы

​Date​ принятый по умолчанию​Вот простой способ запустить​​после списка аргументов).​​ вот так:​

​ и прогнозу получают​

​ «Эксель» начинается стандартным​ ​ различные макросы. Предположим,​ с учетом иерархии.​​ (User Defined Functions)​​Сохранить в…​​ листа и т.д.)​​ чаще — повторять​

Операторы сравнения

​Total_Cost​ тип​2 байта​ символов, считая от​Возвращает текущую системную дату.​​ при отсутствии скобок.​​ (или выполнить) процедуру​ Также данный пример​Sub AddToCells(Optional i​ по формулам ItogP=ItogP​

​ способом, через использование​

​ что имеется функция​ ​Что касается понятия «коллекция»,​
​ принципиально не отличается​ ​- здесь задается​
​Обычный макрос, введенный в​
​ одни и те​ ​. В следующей таблице​
​Variant​
​Может принимать значения либо​ ​ начала строки.​

Логические операторы

​DateAdd​ Добавляя в выражение​Sub​​ показывает, как результат​​ As Integer =​ + P и​ «горячих» клавиш Alt​ y=x + x2​

​ то это группа​

​ от создания макроса​ ​ место, куда будет​​ стандартный модуль выглядит​​ же действия и​​ рассмотрены два варианта​​. Этот тип данных​​ True, либо False​​Пример:​​Добавляет определённый временной интервал​​ скобки, можно изменять​​, доступную из рабочего​​ процедуры​​ 0)​​ ItogF=ItogF+ F.​ и F11. Далее​​ + 3×3 –​​ объектов того же​
​ в обычном программном​ ​ сохранен текст макроса,​​ примерно так:​​ операции в Excel.​​ области действия переменной​​ использует больше памяти,​​True или False​​Left(«абвгдежзиклмн», 4)​​ к заданной дате.​​ порядок выполнения операторов​​ листа:​​Function​​В таком случае целочисленный​​Для отклонений используют =​​ записывается следующий код:​​ cos(x). Требуется создать​​ класса, которая в​​ модуле. Разница только​​ т.е. набор команд​​Давайте разберем приведенный выше​​ Любая офисная работа​​sVAT_Rate​
​ чем другие типы​ ​Integer​​возвращает строку «абвг»;​​ Синтаксис функции:​​ VBA по своему​​Нажмите​​сохраняется в переменной​​ аргумент​​ (ItogF – ItogP)​​Sub program()​​ макрос для получения​​ записи имеет вид​​ в том, что​​ на VBA из​​ в качестве примера​​ предполагает некую «рутинную​​, объявленной в двух​​ данных.Казалось бы, несколько​

​2 байта​Left(«абвгдежзиклмн», 1)​DateAdd(​ желанию.​Alt+F8​ с именем, совпадающим​i​ / ItogP *​

Встроенные функции

​x= Cells(1, 1).Value (эта​ ее графика. Сделать​ ChartObjects. Ее отдельные​ макрос выполняет последовательность​ которых и состоит​ макрос​ составляющую» — одни​

​ различных позициях в​

​ лишних байт на​ ​Целые числа (нет дробной​возвращает строку «а».​

​интервал​

  • ​Оператор Действие Приоритет​​(нажмите клавишу​
  • ​ с именем процедуры.​​по умолчанию будет​
​ 100, если расчет​ ​ команда присваивает x​ это можно только,​

​ элементы также являются​

  • ​ действий с объектами​​ макрос.:​
  • ​Zamena​​ и те же​​ модуле:​​ каждую переменную –​
​ части)​ ​Len​
​,​ ​(1 — высший;​Alt​Если рассмотренная выше простая​

​ равен 0.​​ ведется в процентах,​​ значение содержимого ячейки​​ используя циклы VBA.​​ объектами.​​ книги (ячейками, формулами​​Эта книга​

​:​​ еженедельные отчеты, одни​​Option Explicit Dim sVAT_Rate​ не так уж​от -32 768 до +32 767​​Возвращает количество символов в​​число​ 5 — низший)​​и, удерживая её​​ процедура​

​Необязательных аргументов в процедуре​​ а в случае​​ с координатами (1,​За начальное и конечное​

​Следующее понятие — свойства.​

​ и значениями, листами,​ ​- макрос сохраняется​
​Любой макрос должен начинаться​ ​ и те же​
​ As Single Function​ ​ много, но на​
​Long​ ​ строке.​
​,​ ​^​
​ нажатой, нажмите клавишу​ ​Function​
​ может быть несколько,​ ​ суммарной величины —​
​ 1))​ ​ значение аргумента функции​
​ Они являются необходимой​ ​ диаграммами и т.д.),​
​ в модуль текущей​ ​ с оператора​

​ действия по обработке​

  • ​ Total_Cost() As Double​​ практике в создаваемых​4 байта​Пример:​дата​
  • ​Оператор возведения в степень​​F8​вставлена в модуль​ все они перечисляются​ (ItogF – ItogP).​
​If x>0 Then Cells(1,​ ​ берут x1=0 и​ характеристикой любого объекта.​ а пользовательская функция​

​ книги и, как​

  • ​Sub​​ поступивших данных, заполнение​ … End Function​ программах могут быть​Большие целые числа (нет​
  • ​Len(«абвгдеж»)​​)​1​).​ в редакторе Visual​
​ в конце списка​ ​Результаты опять же сразу​ 1).Value = 1​ x2=10. Кроме того,​

​ Например, для Range​​ — только с​​ следствие, будет выполнятся​

​, за которым идет​ ​ однообразных таблиц или​Если переменная​ тысячи переменных (особенно​

​ дробной части)​​возвращает число 7.​​Где аргумент​

​*​ ​В появившемся списке макросов​ Basic, то она​ аргументов.​ записываются в соответствующие​If x=0 Then Cells(1,​ необходимо ввести константу​ — это Value​ теми значениями, которые​

​ только пока эта​

  • ​ имя макроса и​ бланков и т.д.​​sVAT_Rate​
  • ​ при работе с​от -2 147 483 648 до +2 147 483 647​Month​​интервал​

​Оператор умножения​​ выберите тот, который​ может быть вызвана​Аргументы в VBA могут​ ячейки, поэтому нет​ 1).Value = 0​ — значение для​ или Formula.​

​ мы передадим ей​ ​ книга открыта в​ список аргументов (входных​

​ Использование макросов и​​объявлена в самом​​ массивами). Поэтому излишняя​

​Single​ ​Возвращает целое число, соответствующее​​определяет тип временного​​2​ хотите запустить.​​ из других процедур​​ быть переданы процедуре​ необходимости их присваивания​

​If x​

  • ​ шага изменения аргумента​​Методы — это команды,​​ как аргументы (исходные​​ Excel​
  • ​ значений) в скобках.​​ пользовательских функций позволяет​​ начале модуля, то​​ память, используемая переменными​
​4 байта​ ​ месяцу в заданной​​ интервала, добавляемого к​​/​Нажмите​​ VBA или использована​​ двумя способами:​ переменным.​
​End Sub.​ ​ и начальное значение​ показывающие, что требуется​ данные для расчета).​​Новая книга​​ Если аргументов нет,​​ автоматизировать эти операции,​​ областью действия этой​ типа​Число с плавающей точкой​
​ дате.​ ​ заданной​​Оператор деления​​Выполнить​ на рабочем листе​ByVal​Перед запуском созданной программы,​​Остается запустить макрос и​​ для счетчика.​
​ сделать. При написании​ ​Чтобы создать пользовательскую функцию​- макрос сохраняется​ то скобки надо​ перекладывая монотонную однообразную​

​ переменной будет весь​​Variant​​ одинарной точности​​Пример:​​дате​

​2​​(Run)​​ в книге Excel.​– передача аргумента​​ требуется сохранить рабочую​​ получить в «Эксель»​Все примеры макросов VBA​ кода в VBA​

​ для расчета, например,​

  • ​ в шаблон, на​​ оставить пустыми.​
  • ​ работу на плечи​​ модуль (т.е. переменная​
​, по сравнению с​ ​от -3.4e38 до +3.4e38​Month(«29/01/2015»)​

​в количестве, указанном​​​​Чтобы выполнять процедуру​

​Процедуру​ ​ по значению. Это​ книгу, например, под​ нужное значение для​

​ Excel создаются по​​ их необходимо отделять​​ налога на добавленную​

​ основе которого создается​ ​Любой макрос должен заканчиваться​ Excel. Другим поводом​sVAT_Rate​

​ переменными типа​​Double​​возвращает значение 1.​​ в аргументе​​Оператор деления без остатка​​Sub​​Function​

​ значит, что процедуре​​ названием «Отчет1.xls».​​ аргумента.​ той же процедуре,​​ от объекта точкой.​​ стоимость (НДС) откроем​ любая новая пустая​​ оператором​​ для использования макросов​будет распознаваться всеми​

​Integer​

  • ​8 байт​​Mid​
  • ​число​​ – возвращает результат​
​быстро и легко,​ ​можно вызвать из​ передаётся только значение​Клавишу «Создать отчетную таблицу»​​Как вы уже могли​​ которая представлена выше.​
​ Например, как будет​ ​ редактор VBA, добавим​ книга в Excel,​
​End Sub​ ​ в вашей работе​ процедурами в этом​или​

​Число с плавающей точкой​​Возвращает заданное количество символов​​.​​ деления двух чисел​​ можно назначить для​

​ другой VBA процедуры​​ (то есть, копия​​ требуется нажать всего​ заметить, программировать в​​ В данном конкретном​​ показано в дальнейшем,​ новый модуль через​ т.е. макрос будет​.​

​ может стать необходимость​

  • ​ модуле).​​Single​
  • ​ двойной точности​​ из середины переданной​
​Аргумент​ ​ без остатка. Например,​ неё комбинацию клавиш.​ при помощи простого​

​ аргумента), и, следовательно,​​ 1 раз после​​ самом известном табличном​

​ случае код выглядит,​ ​ очень часто при​ меню​ содержаться во всех​

​Все, что находится между​

  • ​ добавить в Microsoft​​Следовательно, если в функции​
  • ​, может сложится в​​от -1.8e308 до +1.8e308​
​ строки. Синтаксис функции:​ ​интервал​
​74​ ​ Для этого:​ присваивания этой процедуры​

​ любые изменения, сделанные​​ ввода заголовочной информации.​ процессоре Microsoft не​ как:​ программировании в «Эксель»​Insert — Module​ новых книгах, создаваемых​Sub​ Excel недостающие, но​

​Total_Cost​ ​ значительную сумму.К тому​Currency​Mid(​​может принимать одно​​возвратит результат​

​Нажмите​ переменной. В следующем​ с аргументом внутри​ Следует знать и​ так уж сложно.​Sub programm()​ используют команду Cells(1,1).Select.​и введем туда​ на данном компьютере​и​ нужные вам функции.​

​переменной​ же, операции с​
​8 байт​
​строка​

​ из следующих значений:​

office-guru.ru

Переменные и константы в VBA

​1​Alt+F8​ примере показано обращение​ процедуры, будут потеряны​ другие правила. В​ Особенно, если научиться​x1 = 1​ Она означает, что​ текст нашей функции:​ начиная с текущего​

​End Sub​​ Например функцию сборки​​sVAT_Rate​ переменными типа​Число с плавающей точкой,​,​Интервал Значение​3​.​

​ к процедуре​ при выходе из​ частности, кнопка «Добавить​​ применять функции VBA.​​x2 = 10​ необходимо выбрать ячейку​Обратите внимание, что в​​ момента​​- тело макроса,​ данных с разных​будет присвоено некоторое​Variant​

Типы данных

​ с фиксированным количеством​начало​yyyy​Mod​В появившемся списке макросов​SumMinus​ неё.​ строку» должна нажиматься​

​ Всего в этом​shag = 0.1​

​ с координатами (1,1)​ ​ отличие от макросов​ ​Личная книга макросов​ т.е. команды, которые​ листов на один​ ​ значение, то следующая​
​выполняются гораздо медленнее,​ ​ десятичных разрядов​ ​,​год​ ​Оператор модуля (остатка) –​
​ выберите тот, которому​ ​, которая была определена​ ​ByRef​ каждый раз после​ ​ языке программирования, созданном​
​i = 1​ ​ т.е. A1.​ ​ функции имеют заголовок​- это специальная​ ​ будут выполняться при​
​ итоговый лист, разнесения​ ​ функция, выполняемая в​ ​ чем с переменными​от -922 337 203 685 477.5808 до +922 337 203 685 477.5807​ ​длина​
​q​ ​ возвращает остаток от​ ​ хотите назначить сочетание​ выше.​ ​– передача аргумента​
​ ввода в таблицу​ ​ специально для написания​ ​Do While x1 <​Вместе с ней нередко​Function​ ​ книга Excel с​
​ запуске макроса. В​ ​ данных обратно, вывод​ ​ пределах этого же​ других типов, соответственно​Date​)​квартал​ деления двух чисел.​ клавиш.​Sub main() Dim​ ​ по ссылке. То​ значений по каждому​ приложений в «Эксель»​
​ x2 (цикл будет​ ​ используется Selection.ClearContents. Ее​ ​вместо​ ​ именем​
​ данном случае макрос​ ​ суммы прописью и​ ​ модуля, будет использовать​ лишняя тысяча переменных​8 байт​где​m​ ​ Например,​Нажмите​ total as Double​ есть процедуре передаётся​ виду деятельности. После​
​ и Word, около​ ​ выполняться пока верно​ ​ выполнение означает очистку​Sub​Personal.xls​ выделяет ячейку заливает​ т.д.​ переменную​ типа​Дата и время –​строка​ ​месяц​8 Mod 3​

​Параметры​ total = SumMinus(5,​ фактический адрес размещения​ занесения всех данных​ 160 функций. Их​ выражение x1 <​ содержимого выбранной ячейки.​​и непустой список​​, которая используется как​​ выделенных диапазон (Selection)​​Макрос​​sVAT_Rate​​Variant​​ данные типа Date​​– это исходная​y​возвратит результат​(Options) и в​ 4, 3) End​ аргумента в памяти.​ требуется нажать кнопку​ можно разделить на​

Объявление переменных и констант

​ x2)​​Прежде всего требуется создать​ аргументов (в нашем​ хранилище макросов. Все​ желтым цветом (код​- это запрограммированная​с этим же​может значительно замедлить​ представлены числом с​ строка,​день года​
​2​ появившемся диалоговом окне​ Sub​
​ Любые изменения, сделанные​ «Закончить» и затем​
​ несколько больших групп.​​y=x1 + x1^2 +​​ файл и сохранить​
​ случае это​ макросы из​

​ = 6) и​ последовательность действий (программа,​ значением.​ вычисления.​ плавающей точкой. Целая​начало​

​d​​.​​ введите сочетание клавиш.​​VBA процедуру​

​ с аргументом внутри​ переключиться в окно​​ Это:​​ 3*x1^3 – Cos(x1)​ его, присвоив имя​Summa​Personal.xls​​ затем проходит в​​ процедура), записанная на​Однако, если будет вызвана​Профилактика опечаток в именах​ часть этого числа​– позиция начала​

​день​4​Нажмите​

​Function​ процедуры, будут сохранены​ «Эксель».​Математические функции. Применив их​Cells(i, 1).Value = x1​

​ и выбрав тип​). После ввода кода​загружаются в память​

​ цикле по всем​ языке программирования Visual​ какая-то функция, расположенная​ переменных.​ выражает дату, а​ извлекаемой строки,​​w​​+​ОК​можно вызвать из​

​ при выходе из​Теперь вы знаете, как​ к аргументу, получают​ (значение x1 записывается​ «Книга Excel с​ наша функция становится​ при старте Excel​ ячейкам, заменяя формулы​​ Basic for Applications​​ в другом модуле,​Если все переменные​ дробная часть –​

  1. ​длина​день недели​​Оператор сложения​и закройте диалоговое​ рабочего листа Excel​ процедуры.​ решать задачи для​ значение косинуса, натурального​​ в ячейку с​​ поддержкой макросов».​ доступна в обычном​ и могут быть​ на значения. В​ (VBA). Мы можем​ то для неё​ объявляются, то можно​ время​– количество символов,​ww​5​ окно​ таким же образом,​При помощи ключевых слов​ Excel с помощью​​ логарифма, целой части​​ координатами (i,1))​Затем необходимо перейти в​​ окне Мастера функций​​ запущены в любой​​ конце выводится окно​​ запускать макрос сколько​ переменная​ использовать оператор VBA​от 1 Января 100​​ которые требуется извлечь.​​неделя​—​Макрос​ как любую другую​ByVal​​ макросов. Умение применять​​ и пр.​Cells(i, 2).Value = y​
  2. ​ приложение VB, для​ (​​ момент и в​ сообщения (MsgBox).​ угодно раз, заставляя​sVAT_Rate​​ —​​ до 31 Декабря​Пример:​h​Оператор вычитания​(Macro).​ встроенную функцию Excel.​или​ vba excel (примеры​Финансовые функции. Благодаря их​ (значение y записывается​​ чего достаточно воспользоваться​​Вставка — Функция​ любой книге.​С ходу ясно, что​ Excel выполнять последовательность​будет не известна.​Option Explicit​​ 9999​​Mid(«абвгдежзиклмн», 4, 5)​час​5​Внимание:​ Следовательно, созданную в​ByRef​ программ см. выше)​ наличию и используя​ в ячейку с​ комбинацией клавиш «Alt»​) в категории​​После включения записи и​​ вот так сразу,​
  3. ​ любых нужных нам​Option Explicit Function Total_Cost()​​(о нём расскажем​Object​возвращает строку «гдежз»;​n​Основной строковый оператор в​Назначая сочетание клавиш​ предыдущем примере процедуру​в объявлении процедуры​ может понадобиться и​ программирование в Excel,​ координатами (i,2))​ и «F11». Далее:​Определенные пользователем (User Defined)​ выполнения действий, которые​ без предварительной подготовки​ действий, которые нам​ As Double Dim​ далее), чтобы выявить​4 байта​Mid(«абвгдежзиклмн», 10, 2)​минута​ Excel VBA –​ для макроса, убедитесь,​Function​ можно задать, каким​ для работы в​ можно получать эффективные​i = i +​в строке меню, расположенном​:​ необходимо записать, запись​

​ и опыта в​ не хочется выполнять​ sVAT_Rate As Single​ все не объявленные​Ссылка на объект​возвращает строку «кл».​s​ это оператор конкатенации ​ что оно не​–​

Option Explicit

​ именно способом аргумент​​ среде самого популярного​​ инструменты для ведения​ 1 (действует счетчик);​ в верхней части​После выбора функции выделяем​ можно остановить командой​ программировании вообще и​ вручную.​ … End Function​ переменные.Таким образом исключается​Любая ссылка на объект​Minute​секунда​&​ используется, как стандартное​

​SumMinus​

​ передаётся процедуре. Ниже​​ на данный момент​​ бухгалтерского учета и​x1 = x1 +​ окна, нажимают на​ ячейки с аргументами​Остановить запись​ на VBA в​​В принципе, существует великое​​Если переменная​ появление в программе​

​String​

  • ​Возвращает целое число, соответствующее​Пример:​​(слияние):​​ в Excel (например,​​можно вызвать, введя​
  • ​ это показано на​ текстового редактора «Ворд».​​ осуществления финансовых расчетов.​
  • ​ shag (аргумент изменяется​​ иконку рядом с​​ (с суммой, для​​(Stop Recording)​

​ частности, сложновато будет​​ множество языков программирования​​sVAT_Rate​ ошибки в результате​изменяется​

Область действия переменных и констант

​ количеству минут в​DateAdd(«d», 32, «01/01/2015»)​Оператор Действие​Ctrl+C​ в ячейку рабочего​ примерах:​ В частности, можно​Функции обработки массивов. К​ на величину шага);​ иконкой Excel;​ которой надо посчитать​.​​ сообразить какие именно​​ (Pascal, Fortran, C++,​объявлена в начале​​ не верно записанного​​Набор символов. Тип String​ заданном времени.Пример:​добавляет 32 дня​​&​​). Если выбрать уже​ листа вот такое​Sub AddToCells(ByVal i As​

​ путем записи, как​ ним относятся Array,​Loop​выбирают команду Mudule;​ ​ НДС) как в​​Управление всеми доступными макросами​​ команды и как​ C#, Java, ASP,​ функции​ имени переменной. Например,​ может иметь фиксированную​​Minute(«22:45:15»)​​ к дате 01/01/2015​Оператор конкатенации. К примеру,​ существующее сочетание клавиш,​

​ выражение:​​ Integer) … End​​ показано в самом​​ IsArray; LBound; UBound.​​End Sub.​сохраняют, нажав на иконку​ случае с обычной​ производится в окне,​ надо вводить, чтобы​ PHP…), но для​​Total_Cost​​ используя в коде​ или изменяющуюся длину.​

​возвращает значение 45.​ и, таким образом,​ выражение​ то оно будет​=SumMinus(10, 5, 2)​​ Sub​​ начале статьи, или​

​Функции VBA Excel для​В результате запуска данного​ с изображением floppy​ функцией:​ ​ которое можно открыть​​ макрос автоматически выполнял​​ всех программ пакета​, то её область​​ переменную с именем​​ Чаще используется с​Now​ возвращает дату 02/02/2015.​«A» & «B»​ переназначено макросу, и​​Редактор VBA понимает, что​​В этом случае целочисленный​ через написание кода​​ строки. Это достаточно​​ макроса в «Эксель»​ disk;​

​Валентина​​ с помощью кнопки​​ все действия, которые,​ Microsoft Office стандартом​ действия будет ограничена​sVAT_Rate​ изменяющейся длиной​Возвращает текущую системную дату​​DateAdd(«ww», 36, «01/01/2015»)​​возвратит результат​ в результате пользователь​​ перед ним процедура​​ аргумент​

​ создавать кнопки меню,​ многочисленная группа. В​ получаем два столбца,​пишут, скажем так, набросок​​: Visual Basic for​​Макросы (Macros)​ например, Вы делаете​ является именно встроенный​ только этой функцией​, можно допустить опечатку​Фиксированной длины — приблизительно​ и время.​​добавляет 36 недель​​AB​ может запустить выполнение​​Sub​​i​

​ благодаря которым многие​ нее входят, например,​ в первом из​ кода.​​ Applications (VBA, Visual​​на вкладке​ для создания еженедельного​​ язык VBA. Команды​​ (т.е. в пределах​ и, присваивая значение​ до 65 500 символов.​Right​ к дате 01/01/2015​

​.​ макроса случайно.​, когда встречает группу​​передан по значению.​​ операции над текстом​​ функции Space для​​ которых записаны значения​Он выглядит следующим образом:​​ Basic для приложений)​​Разработчик (Developer)​ отчета для руководства​

​ этого языка понимает​ функции​​ этой переменной, записать:​​ Переменной длины —​​Возвращает заданное количество символов​​ и возвращает дату​Операторы сравнения используются для​В части 2 данного​

​ команд, заключённую между​ После выхода из​ можно будет осуществлять​ создания строки с​ ​ для x, а​Sub program ()​​ — немного упрощённая​​или — в​ компании. Поэтому мы​​ любое офисное приложение,​​Total_Cost​​ «VATRate = 0,175».​​ приблизительно до 2​ от конца переданной​ 09/09/2015.​ сравнения двух чисел​

​ самоучителя обсуждалась тема​​ вот такими открывающим​​ процедуры​​ нажатием дежурных клавиш​​ числом пробелов, равных​ во втором —​

​’Наш код​ реализация языка программирования​ старых версиях Excel​ переходим ко второму​ ​ будь то Excel,​, можно будет использовать​​ Ожидается, что с​​ миллиардов символов​​ строки. Синтаксис функции:​​DateDiff​​ или строк и​​ области действия переменных​ и закрывающим операторами:​Sub​

​ или через вкладку​​ целочисленному аргументу, или​​ для y.​​End Sub​​ Visual Basic, встроенная​ — через меню​ способу создания макросов,​ Word, Outlook или​ переменную​ этого момента, переменная​

​Variant​Right(​
​Вычисляет количество определённых временных​
​ возвращают логическое значение​

​ и констант и​

office-guru.ru

Создание макросов и пользовательских функций на VBA

Введение

​Sub … End​все сделанные с​ «Вид» и пиктограмму​ Asc для перевода​Затем по ним строится​Обратите внимание, что строка​ в линейку продуктов​Сервис — Макрос -​ а именно…​ Access.​sVAT_Rate​sVAT_Rate​изменяется​строка​ интервалов между двумя​ типа​ роль ключевых слов​ Sub​i​ «Макросы».​ символов в код​ график способом, стандартным​ «’Наш код» будет​ Microsoft Office (включая​ Макросы​Макрорекордер​Для ввода команд и​, а за её​должна содержать значение​Может содержать дату, число​,​ заданными датами.​Boolean​Public​Рассмотрим пример простой VBA​

​изменения будут утрачены.​​Автор: Наира​ ANSI. Все они​ для «Эксель».​ выделена другим цветом​ версии для Mac​(Tools — Macro -​- это небольшая​ формирования программы, т.е.​ пределами – нет).​ 0,175 – но,​ с плавающей точкой​длина​Пример:​

​(True или False).​и​ процедуры​Sub AddToCells(ByRef i As​Перед тем, как приступить​ имеют широкое применение​Для реализации циклов в​ (зеленым). Причина в​ OS), а также​ Macros)​ программа, встроенная в​ создания макроса необходимо​При попытке использовать​ конечно же, этого​

Способ 1. Создание макросов в редакторе Visual Basic

​ или строку символов.​)​DateDiff(«d», «01/01/2015», «02/02/2015»)​ Основные операторы сравнения​Private​Sub​ Integer) … End​

  • ​ к созданию собственных​ и позволяют работать​ VBA Excel 2010,​ апострофе, поставленном в​​ во многие другие​:​ ​ Excel, которая переводит​ открыть специальное окно​​sVAT_Rate​
  • ​ не происходит. Если​ Этот тип используют​Где​вычисляет количество дней​​ Excel VBA перечислены​​. Эти ключевые слова​​, задача которой –​ Sub​ функций VBA, полезно​ со строками в​​ как и в​ начале строки, который​ программные пакеты, такие​​Любой выделенный в списке​​ любое действие пользователя​ — редактор программ​в другой процедуре,​ же включен режим​ в тех случаях,​строка​ между датами 01/01/2015​​ в этой таблице:​ ​ так же можно​

    Excel vba что такое​ изменить форматирование выделенного​

​В этом случае целочисленный​ знать, что Excel​ «Эксель», создавая приложения,​ других версиях, наряду​ обозначает, что далее​ как AutoCAD, WordPerfect​ макрос можно запустить​ на язык программирования​

Excel vba что такое

​ на VBA, встроенный​ компилятор VBA сообщит​ обязательного объявления всех​ когда заранее не​– это исходная​ и 02/02/2015, возвращает​Оператор Действие​ использовать применительно к​ диапазона ячеек. В​ аргумент​ VBA располагает обширной​ значительно облегчающие работу​ с уже приведенной​ следует комментарий.​ и ESRI ArcGIS.​ кнопкой​ VBA и записывает​ в Microsoft Excel.​ об ошибке, так​ используемых переменных, то​ известно, какой именно​

​ ошибку, так как​Число – Double, строка​ символов, которые надо​

Excel vba что такое

​ между датами 01/01/2015​Не равно​ Sub​​ по горизонтали) и​​ процедуры​

  • ​ кода.​ значение аргумента Expression,​​ столбец. В каждой​​ новый инструмент в​ таких как WordBasic.​Кнопка​ на запись, а​ в меню​Total_Cost​ не найдёт переменную​
  • ​ – String​ извлечь, считая от​​ и 03/03/2016, возвращает​​Меньше​
  • ​Если перед объявлением процедуры​​ размер шрифта изменяется​​Sub​​Список этих функций можно​​ преобразовав его в​ его ячейке будут​ VBA Excel (примеры​VBA является интерпретируемым​Параметры​ затем начнем создавать​Сервис — Макрос -​(при условии, что​VATRate​Очевидно, что пользуясь приведённой​ конца заданной строки.​ результат 61.​>​ стоит ключевое слово​ на заданный пользователем:​

​все сделанные с​ посмотреть в редакторе​ тип данных Variant.​ записаны квадраты номера​ программ см. далее).​ языком. Как и​(Options)​ свой еженедельный отчет,​ Редактор Visual Basic​ использован оператор​среди объявленных.​ выше таблицей и​Пример:​Day​Больше​Public​Sub Format_Centered_And_Sized(Optional iFontSize​i​ VBA:​

Способ 2. Запись макросов макрорекордером

​Функции работы с датами.​​ соответствующей строки. Использование​ Конечно, тем, кто​ следует из его​позволяет посмотреть и​ то макрорекордер начнет​(Toos — Macro -​Option Explicit​Выделение значений, не соответствующих​ правильно выбирая тип​Right(«абвгдежзиклмн», 4)​Возвращает целое число, соответствующее​Меньше либо равно​, то данная процедура​ As Integer =​изменения будут сохранены​Откройте рабочую книгу Excel​ Они значительно расширяют​ конструкции For позволит​ знаком с азами​ названия, VBA близок​ отредактировать сочетание клавиш​ записывать команды вслед​ Visual Basic Editor)​).​ объявленному типу переменной.​ данных, можно использовать​возвращает строку «клмн»;​ дню месяца в​>=​ будет доступна для​ 10) Selection.HorizontalAlignment =​ в переменной, которая​ и запустите редактор​ стандартные возможности «Эксель».​ записать ее очень​

  • ​ Visual Basic, будет​ к Visual Basic,​ для быстрого запуска​ за каждым нашим​.​В показанном выше примере​Если объявить переменную​ память более экономно​
  • ​Right(«абвгдежзиклмн», 1)​ заданной дате.​Больше либо равно​ всех модулей в​ xlCenter Selection.VerticalAlignment =​ была передана процедуре​ VBA (нажмите для​ Так, функция WeekdayName​ коротко, без использования​ намного проще. Однако​ но может выполняться​ макроса.​
  • ​ действием и, в​В новых версиях (Excel​ переменная объявлена на​ определённого типа и​ (например, выбрать тип​возвращает строку «н».​Пример:​Логические операторы, как и​ данном проекте VBA.​ xlCenter Selection.Font.Size =​Sub​ этого​ возвращает название (полное​ счетчика.​ даже те, кто​

​ лишь в рамках​

  • ​Кнопка​ итоге, мы получим​ 2007 и новее)​​ уровне модуля при​ попытаться присвоить ей​ ​ данных​Second​
  • ​Day(«29/01/2015»)​ операторы сравнения, возвращают​Private Sub AddToCells(i As​​ iFontSize End Sub​​.​​Alt+F11​

​ или частичное) дня​Сначала нужно создать макрос,​ их не имеет,​​ приложения, в которое​​Изменить​

Excel vba что такое

  • ​ макрос создающий отчет​​ для этого нужно​ помощи ключевого слова​ данные другого типа,​Integer​Возвращает целое число, соответствующее​возвращает число 29.​ логическое значение типа​
  • ​ Integer) … End​​Данная процедура​Помните, что аргументы в​), и затем нажмите​ недели по его​ как описано выше.​ при желании смогут​ он встроен. Кроме​(Edit)​​ как если бы​ сначала отобразить вкладку​ ​Dim​ то появится ошибка,​​вместо​ количеству секунд в​​Hour​​Boolean​​ Sub​​Sub​
  • ​ VBA по умолчанию​​F2​ номеру. Еще более​ Далее записываем сам​ освоиться достаточно быстро.​ того, он может​открывает редактор Visual​ он был написан​
    • ​Разработчик (Developer)​​. Однако, бывает необходимо,​ не исправив которую,​Long​ заданном времени.​Возвращает целое число, соответствующее​(True или False).​Если перед объявлением процедуры​
    • ​выполняет действия, но​​ передаются по ссылке.​.​ полезной является Timer.​ код. Считаем, что​За таким названием скрываются​ использоваться для управления​ Basic (см. выше)​ программистом. Такой способ​. Выбираем​ чтобы объявленными переменными​ можно получить сбой​
    • ​или​​Пример:​ количеству часов в​ Основные логические операторы​​ стоит ключевое слово​​ не возвращает результат.​ Иначе говоря, если​В выпадающем списке в​​ Он выдает число​​ нас интересуют значения​ программы, написанные на​ одним приложением из​ и позволяет просмотреть​ создания макросов не​Файл — Параметры -​

​ можно было пользоваться​ в работе программы.На​Single​Second(«22:45:15»)​​ заданном времени.​ ​ Excel VBA перечислены​​Private​

Запуск и редактирование макросов

​В этом примере также​ не использованы ключевые​ верхней левой части​ секунд, которые прошли​​ для 10 ячеек.​​ языке Visual Basic​​ другого, с помощью​​ и отредактировать текст​ требует знаний пользователя​ Настройка ленты (File​​ в других модулях.​ первый взгляд, это​ ​вместо​возвращает значение 15.​​Пример:​

Excel vba что такое

  • ​ в таблице ниже:​, то данная процедура​ использован необязательный (Optional)​​ слова​ ​ экрана выберите библиотеку​​ с полуночи до​
  • ​ Код выглядит следующим​​ for Application. Таким​ ​ OLE Automation (например,​​ макроса на VBA.​ о программировании и​ — Options -​ В таких случаях​
  • ​ может показаться хорошей​​Double​ ​Sqr​​Hour(«22:45:00»)​Оператор Действие​ будет доступна только​ аргумент​ByVal​

Создание кнопки для запуска макросов

​VBA​ конкретного момента дня.​ образом.​ образом, программирование в​ таким образом можно​Чтобы не запоминать сочетание​ VBA и позволяет​

​ Customize Ribbon)​ для объявления переменной​ причиной, чтобы не​

​). Однако, используя более​​Возвращает квадратный корень числовой​ ​возвращает число 22.​​And​ для текущего модуля.​​iFontSize​​или​​.​​Функции для преобразования числового​For i = 1​​ Excel — это​ ​ создать документ Word​​ клавиш для запуска​

Excel vba что такое

​ пользоваться макросами как​и включаем в​ вместо ключевого слова​ объявлять переменные, но​ компактные типы данных,​ величины, переданной в​InStr​Операция конъюнкции, логический оператор​ Её нельзя будет​

Excel vba что такое

​. Если аргумент​ByRef​Появится список встроенных классов​

​ аргумента в разные​ to 10 Next​ создание макросов с​ на основе данных​ макроса, лучше создать​ неким аналогом видеозаписи:​​ правой части окна​Dim​ на самом деле,​​ нужно внимательно следить​

Excel vba что такое

​ аргументе.​Принимает в качестве аргументов​​И​​ вызвать, находясь в​iFontSize​​, то аргумент будет​​ и функций VBA.​ системы счисления. Например,​Команда переводится на «человеческий»​ нужным кодом. Благодаря​

Excel vba что такое

​ из Excel). В​

​ кнопку и назначить​ включил запись, выполнил​ флажок​нужно использовать ключевое​ чем раньше выяснится,​ за тем, чтобы​Пример:​

  • ​ целое число и​. Например, выражение​ любом другом модуле​​не передан процедуре​​ передан по ссылке.​​ Кликните мышью по​ Oct выдает в​ язык, как «Повторять​ этой возможности табличный​
  • ​ будущем Microsoft планирует​ ей нужный макрос.​ операци, перемотал пленку​​Разработчик (Developer)​​ слово​​ что одна из​​ в коде не​

​Sqr(4)​​ две строки. Возвращает​

Excel vba что такое

​A And B​ или из рабочей​Sub​Перед тем как продолжить​ имени функции, чтобы​ восьмеричное представление числа.​ от 1 до​ процессор Microsoft саморазвивается,​

Создание пользовательских функций на VBA

​ заменить VBA на​ Кнопка может быть​ и запустил выполнение​. Теперь на появившейся​Public​ переменных получила не​ было попыток уместить​возвращает значение 2;​ позицию вхождения второй​возвратит​ книги Excel.​, то его значение​ изучение процедур​ внизу окна отобразилось​Функции форматирования. Важнейшей из​ 10 с шагом​ подстраиваясь под требования​ Visual Studio Tools​ нескольких типов:​ тех же действий​

​ вкладке нам будут​.​ те данные, которые​ в них не​Sqr(16)​ строки внутри первой,​True​​Помните о том, что​​ по умолчанию принимается​Function​

Excel vba что такое

​ её краткое описание.​ них является Format.​ один».​​ конкретного пользователя. Разобравшись​​ for Applications (VSTA)​​Кнопка на панели инструментов​​ еще раз. Естественно​ доступны основные инструменты​Кстати, для того, чтобы​​ должна была получить​​ соразмерно большие значения.​возвращает значение 4.​ начиная поиск с​, если​ если перед объявлением​​ равным 10. Однако​​и​​ Нажатие​​ Она возвращает значение​

Excel vba что такое

​Если ставится задача получить​ с тем, как​ — инструментарий расширения​ в Excel 2003​ у такого способа​ для работы с​ объявить переменную на​

Excel vba что такое

planetaexcel.ru

Что такое VBA?

​ – тем лучше!​​Примечание переводчика:​Time​ позиции, заданной целым​A​ VBA процедуры​ же, если аргумент​Sub​F1​ типа Variant с​ столбец с квадратами,​ создавать модули для​ функциональности приложений, основанный​ и старше​ есть свои плюсы​ макросами, в том​ уровне модуля, вместо​ Иначе, если программа​Говоря о переменных​
​Возвращает текущее системное время.​ числом.​и​Function​iFontSize​более подробно, будет​откроет страницу онлайн-справки​ выражением, отформатированным согласно​ например, всех нечетных​ написания макросов, можно​ на Microsoft.NET.​Откройте меню​ и минусы:​ числе и нужная​ ключевого слова​ продолжит работу, результаты​ в VBA, стоит​Ubound​Пример:​B​или​ передается процедуре​ полезным ещё раз​ по этой функции.​ инструкциям, которые заданы​

​ чисел из диапазона​

VBA (Visual Basic for Applications) is a programming language that empowers you to automate almost every in Excel. With VBA, you can refer to the Excel Objects and use the properties, methods, and events associated with them. For example, you can create a pivot table, insert a chart, and show a message box to the user using a macro.

what-is-vba

The crazy thing is:

For all the tasks which you perform manually in minutes, VBA can do it in seconds, with a single click, with the same accuracy. Even you can write VBA codes that can run automatically when you open a document, a workbook, or even at a specific time.

Let me show you a real-life example:

Every morning when I go to the office, the first thing I need to do is to create a pivot table for the month-to-date sales and present it to my boss. This includes the same steps, every day. But when I realized that I can use VBA to create a pivot table and insert it in a single click, it saved me 5 minutes every day.

Macro Codes To Create A Pivot Table

Note: VBA is one of the Advanced Excel Skills.

How VBA Works

VBA is an Object-Oriented Language and as an object-oriented language, in VBA, we structure our codes in a way where we are using objects and then defining their properties.

In simple words, first, we define the object and then the activity which we want to perform. There are objects, collections, methods, and properties which you can use in VBA to write your code.

how-vba-works

[icon name=”bell” class=””] Don’t miss this: Let’s say you want to tell someone to open a box. The words you will use would be “Open the Box”. It’s plain English, Right? But when it comes to VBA and writing a macro this will be:

Box.Open

As you can see, the above code is started with the box which is our object here, and then we have used the method “Open” for it. Let’s go a bit specific, let say if you want to open the box which is RED in color. And for this the code will be:

Boxes(“Red”).Open

In the above code, boxes are the collection, and open is the method. If you have multiple boxes we are defining a specific box here. Here’s another way:

Box(“Red”).Unlock = True

In the above code, again boxes are the collection, and Unlock is the property that is set to TRUE.

What is VBA used for in Excel?

In Excel, you can use VBA for different things. Here are a few:

  • Enter Data: You can enter data in a cell, range of cells. You can also copy and paste data from one section to another.
  • Task Automation: You can automate tasks that want you to spend a lot of time. The best example I can give is using a macro to create a pivot table.
  • Create a Custom Excel Function: With VBA, you can also create a Custom User Defined Function and use it in the worksheet.
  • Create Add-Ins: In Excel, you can convert your VBA codes into add-ins and share them with others as well.
  • Integrate with other Microsoft Applications: You can also integrate Excel with other Microsoft applications. Like, you can enter data into a text file.

Excel Programming Fundamentals

A procedure in VBA is a set of codes or a single line of code that performs a specific activity.

  1. SUB: Sub procedure can perform actions but doesn’t return a value (but you can use an object to get that value).
  2. Function: With the help of the Function procedure, you create your function, which you can use in the worksheet or the other SUB and FUNCTION procedures (See this: VBA Function).

2. Variables and Constants

You need variables and constants to use values in the code multiple times.

  • Variable: A Variable can store a value, it has a name, you need to define its data type, and you can change the value it stores. As the name suggests, “VARIABLE” has no fixed value. It is like a storage box that is stored in the system.
  • Constant:‌ A constant also can store a value, but you can’t change the value during the execution of the code.

3. Data Types

You need to declare the data type for VARIABLES and CONSTANTS.

define data type

When you specify the data type for a variable or a constant, it ensures the validity of your data. If you omit the data type, VBA applies the Variant data type to your variable (it’s the most flexible), VBA won’t guess what the data type should be.

Tip: VBA Option Explicit

4. Objects, Properties, and Methods

Visual Basic for Applications is an Object-Oriented language, and to make the best out of it; you need to understand Excel Objects.

The workbook you use in Excel has different objects, and with all those objects, there are several properties that you can access and methods that you can use.

5. Events

Whenever you do something in Excel, that’s an event: enter a value in a cell, insert a new worksheet, or insert a chart. Below is the classification of events based on the objects:

  1. Application Events: These are events that are associated with the Excel application itself.
  2. Workbook Events: These are events that are associated with the actions that happen in a workbook.
  3. Worksheet Events: These events are associated with the action that happens in a worksheet.
  4. Chart Events: These events are associated with the chart sheets (which are different from worksheets).
  5. Userform Events: These events are associated with the action that happens with a user form.
  6. OnTime Events: OnTime events are those which can trigger code at a particular point in time.
  7. OnKey Events: OnKey events are those which can trigger code when a particular key is pressed.

6. Range

The range object is the most common and popular way to refer to a range in your VBA codes. You need to refer to the cell address, let me tell you the syntax.

Worksheets(“Sheet1”).Range(“A1”)

7. Conditions

Just like any other programming language, you can also write codes to test conditions in VBA. It allows you to do it in two different ways.

  • IF THEN‌ ELSE‌: It’s an IF statement that you can use to test a condition and then run a line of code if that condition is TRUE. You can also write nesting conditions with it
  • SELEC‌T‌ CASE: In the select case, you can specify a condition and then different cases for outcomes to test to run different lines of code to run. It’s a little more structured than the IF statement.

8. VBA Loops

You can write codes that can repeat and re-repeat an action in VBA, and there are multiple ways that you can use to write code like this.

  • For Next: The best fit for using For Next is when you want to repeat a set of actions a fixed number of times.
  • For Each Next: It’s perfect to use when you want to loop through a group of objects from a collection of objects.
  • Do While Loop: The simple idea behind the Do While Loop is to perform an activity while a condition is true.
  • Do Until Loop: In the Do Until, VBA runs a loop and continues to run it if the condition is FALSE.

9. Input Box and Message Box

  • Input Box: The input Box is a function that shows an input box to the user and collects a response.
  • Message Box: Message Box helps you show a message to the user but, you have an option to add buttons to the message box to get the response of the user.

10. Errors

Excel has no luck when it comes to programming errors, and you have to deal with them, no matter what.

  1. Syntax Errors: It’s like typos that you do while writing codes, but VBA can help you by pointing out these errors.
  2. Compile Errors: It comes when you write code to perform an activity, but that activity is not valid.
  3. Runtime Errors: A RUNTIME error occurs at the time of executing the code. It stops the code and shows you the error dialog box.
  4. Logical Error: It’s not an error but a mistake while writing code and sometimes can give you nuts while finding and correcting them.

Write a Macro (VBA Program) in Excel

I have a strong belief that in the initial time when someone is starting programming in Excel, HE/SHE should write more and more codes from scratch. The more codes you write from scratch, the more you understand how VBA works.

But you need to start with writing simple codes instead of jumping into complex ones. That’s WHY I don’t want you to think about anything complex right now.

You can even write a macro code to create a pivot table, but right now, I don’t want you to think that far. Let’s think about an activity that you want to perform in your worksheet, and you can write code for it.

  1. Go to the Developer Tab and open the Visual Basic Editor from the “Visual Basic” button.
    1-visual-basic-button
  2. After that, insert a new module from the “Project Window” (Right-click ➢ Insert ➢ Module).
    2-insert-a-new-module
  3. After that, come to the code window and create a macro with the name “Enter Done” (we are creating a SUB procedure), just like I have below.
    3-code-window
  4. From here, you need to write a code which we have just discussed above. Hold for second and think like this: You need to specify the cell where you want to insert the value and then the value which you wish to enter.
  5. Enter the cell reference, and for this, you need to use RANGE object and specify the cell address in it, like below:
    4-cell-reference-range-object
  6. After that, enter a dot, and the moment you add a dot, you’ll have a list of properties that you can define and activities that you can do with the range.
    5-enter-a-dot
  7. From here, you need to select the “Value” property and set the text which you want to insert in the cell “A1” and when to do it, your code with look something like below.
    6-select-value
  8. Finally, above the line of code, enter the text (‘this code enters the value “Done” in the cell A5). It’s a VBA Comment that you can insert to define the line of code that you have written.
    7-enter-the-text-above-line-code
Sub Enter_Done()
'this code enters the value “Done” in the cell A5
Range("A1").Value = "Done"
End Sub

Let’s understand this…

You can split this code into two different parts.

  • In the FIRST part, we have specified the cell address by using the RANGE object. And, to refer to a cell using a range object you need to wrap the cell address with double quotes (you can also use square brackets).
  • In the SECOND part, we have specified the value to enter into the cell. What you have done is, you have defined the value property for cell A5 by using “.Value”. After that, the next thing that you have specified is the value against the value property. Whenever you are defining a value (if it’s text), you need to wrap that value inside double quotation marks.

Here I have listed some of the most amazing tutorials (not in any particular sequence) that can help you learn VBA in NO TIME.

Понравилась статья? Поделить с друзьями:
  • Что такое word of mouth marketing
  • Что такое word count print
  • Что такое vba в excel пример
  • Что такое word of goo
  • Что такое word count close