Visual Basic for Applications («ВиБиЭй») является диалектом Visual Basic, расширяющим его возможности. Он используется для работы с продуктами Microsoft, будучи самым удобным языком для «офисных» приложений: он в них уже встроен. Дополнительно он встроен в некоторые продукты сторонних фирм – CorelDraw, CorelWordPerfect Office 2000, AutoCAD и около 100 других.
Разобраться в основах и тонкостях языка программирования VBA новичкам помогут приведенные в подборке от ВСЕ КУРСЫ ОНЛАЙН бесплатные видео уроки для новичков.
С чего начать
Видеоурок посвящен базовым навыкам работы с умной таблицей. Дается инструкция по выбору стиля, присвоению названия, добавлению модуля, созданию процедуры. Далее преподаватель научит присваивать переменной объект с помощью Set, удалять/добавлять строки, столбцы, колонки, выделять нужную область, таблицу целиком или только шапку, очищать ячейки от записей, форматировать все колонки разом, подключать функцию подведения итогов, использовать свойства DataBodyRange, HedetRowRange, ColumnWidth, ShowTotals. Приведенные манипуляции комментируются и демонстрируются на экране для упрощения восприятия.
Знакомство
На уроке начинающие познакомятся с оболочкой для разработок на VBA. Особенностью видео стало отсутствие звукового сопровождения – все комментарии даются в текстовом формате, что придется по вкусу всем, кто не любит пояснения учителей, людям, с нарушением слуха, ученикам, вынужденным заниматься в тишине, чтобы не мешать окружающим. Новички узнают о структурных элементах интерфейса среды программирования, основных блоках управления, освоят принципы создания модулей, пользовательских форм, пошагового запуска и контроля значений.
Макросы
Людям, постоянно повторяющим одинаковые манипуляции, требуется автоматизация однотипных задач. Для этого необходимо записать макрос, представляющий собой набор действий, запускающихся столько раз, сколько потребуется в конкретной ситуации. Что такое макросы, как они используются и «запоминаются», расскажет Николай Павлов. Николай является тренером по продуктам Microsoft Office, автором книги-руководства, создателем сайта «Планета Excel» и обучающего видеоблога. Он более 10 лет проводит тренинги для компаний и частных лиц, разрабатывает проекты, позволяющие автоматизировать бизнес-процессы.
Первые шаги
Изучение любой дисциплины начинается с освоения базы знаний. Автор постарался дать зрителям максимум полезной информации за минимальный срок. Он расскажет о редакторе VB Editor, объяснит, как рекомендуется располагать его окна (к ним относят Project Explorer, Watch Window, Immediate Window, Properties Window), поговорит о работе кода, модулях, макрокомандах (стандартных, пользовательских форм). В практической части речь пойдет о математических операторах, их использовании. В завершение приводится небольшое домашнее задание для закрепления результата.
Offset
Выучив азы, стоит перейти на команды, помогающие выполнять определенные задачи. Ведущий этого ролика создал канал, посвященный увеличению эффективности работы в «Эксель», включая автоматизацию процессов. Он делится качественно снятыми, хорошо смонтированным видеоуроками, где материал подается сжато, четко по существу, без пространственных рассуждений. Эта запись посвящена теме свойства Offset (объект Range), используемого для «смещения» выбора одной конкретной или нескольких ячеек. В конце предлагается выполнить упражнение для лучшего понимания тематики.
Объектные переменные
В уроке речь пойдет об объектных перемененных, их объявлении, «привязывании», применении в коде. Занятие концентрируется на Workbooks (рабочих книгах), Worksheets
(рабочих листах), Ranges (ячейках). Автор четко доносит до учеников суть, приводя на экране самое важное. Дополнительно разбирается Debug.Print – один из ключевых функционалов окна Immediate Window, помогающий проводить тестирование, настройку программ. Заключение состоит из домашнего задания. Его выполнение способствует закреплению материала.
Процедуры Function и Sub
Прежде чем приступать к созданию собственных функций, целесообразно разобраться с готовой коллекцией встроенных, пригодных для использования в написании кода. В занятии разбираются особенности и различия двух процедур – Sub и Function . Первая не возвращает результат, поэтому к ней прибегают, если цель – само действие (например, изменение форматирования группы ячеек). Вторая возвращает, поэтому к ней прибегают, если цель – получение конкретного результата (например, суммирование чисел). Чтобы наглядно показать отличия, преподаватель решит одну и ту же задачу, прибегнув к Function и Sub.
Многомерные массивы
Массивы представляют собой множество однотипных элементов с одним именем. Они отличаются индексами, бывают динамическими, одномерными, многомерными (двух-, трехмерными). В данном видеоролике речь пойдет о последнем варианте. В начале преподаватель для наглядности рассмотрит массив в виде матрицы, где первый аргумент представляет собой строчки, а второй столбики, затем покажет, как объявляется константа и массивы. Все шаги показаны на мониторе, пониманию способствуют поясняющие комментарии, которые помогают разобраться в тонкостях.
Прототип магазина
Освоив базовые навыки, можно приступать к их отработке на реальных проектах. Ведущий мастер-класса предлагает вместе с ним попрактиковаться, написав реальную программу. Он взял за пример прототип интернет-магазина, содержащего три главные составляющие – листы склада, покупателей, заказов. Дополнительно имеется блок управления (менеджера). Целью занятия является демонстрация первых шагов в разработке средней сложности. Учителем выступает Артем Семуков – автор проекта ROBOTOBOR и одноименного YouTube-канала, где делится своим опытом программирования.
Доработка интернет-магазина
Став разрабатывать свой первый проект, важно довести начатое до конца, в чем поможет мастер-класс А. Семукова. В процессе дается информация о делении на объекты и методы (процедуры и функции), использовании модификаторов доступа, разделении ответственности между сущностями, реализации внутренних/публичных методов, тестировании установке заглушек в коде. Артем увлекается передовыми технологиями упрощающими жизнь, занимается автоматизацией рутинных процессов. Изучение ЯП Артем начал с Assembler-а, затем приступил к TurboPascal, С++, C#, VBA, позже увлекся HTML/CSS, javascript, TypeScript, Python.
Используя Visual Basic for Applications, можно делать приложения на Visual Basic, применять возможности языка VBScript, что позволит изучить универсальные средства создания скриптов администрирования Windows. Овладеть навыками не сложно – VBA позиционируется как ЯП для обычных пользователей, а не профессионалов, а подсказки по объектам, синтаксису и другие помощники встроены в MS Office.
Смотрите также:
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020546
Это завершающий урок из курса «Погружение в язык VBA». Мы допишем функционал работы с файлами, а также проделаем завершающие штрихи по коду и
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020590
В этом видеоуроке мы научимся автоматически импортировать (подгружать) данные из текстового файла txt, csv в Excel по нажатию кнопки. Продолжаем реализовывать
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020478
В этом видеоуроке мы научимся автоматически выгружать данные из Excel в текстовый файл txt по нажатию кнопки. Продолжаем реализовывать функционал склада
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020448
В этом видеоуроке мы будем исправлять некоторые ошибки в коде. Продолжаем реализовывать функционал склада нашего магазинчика. Пишем код на языке VBA.
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020465
В этом видеоуроке мы доделаем функционал по получению курса валюты ЦБ, а также воспользуемся элементом управления Checkbox. Продолжаем реализовывать функционал
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020509
В этом видеоуроке мы научимся получать курс валюты ЦБ через интернет, а также научимся парсить данные с сайта. Продолжаем реализовывать функционал склада
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020415
В этом видеоуроке мы научимся обрабатывать Ошибки Error или Исключения, как их еще называют в других языках программирования. Продолжаем реализовывать
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020426
В этом видеоуроке мы будем учиться работать с таким контролом, т.е. элементом управления, как Image. А также будем рефакторить наш код. Продолжаем реализовывать
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020450
В этом видеоуроке мы добавим возможность Удаления товаров со склада, а также исправляем некоторые ошибки в коде. Пишем код на языке VBA.
Видеокурс — Погружение в язык VBA (Excel)
23.09.2020410
В этом видеоуроке мы добавим возможность обновления товаров на складе, т.е. на листе Excel, через обновление значений элементов управления (контролов) на форме Form.
We have 24 Excel VBA — Basics videos listed below. You might also like to consider booking a place on one of our online or classroom VBA courses, where you will meet the owls behind the videos!
Excel VBA Part 1 — The VB Editor
Posted by
Andrew Gould
on 10 May 2013
Before you can start writing VBA code for Excel you need to understand how to use the tool that you’ll use to do your programming. This video teaches you how to get started using the Visual Basic Editor, including how to get into the application from various versions of Excel, how to work with the various windows, how to modify the default settings and how to work with modules. You won’t learn how to write any code here, but this video will ensure your life will be as easy as possible when you do!
Excel VBA Part 2 — Writing Your First Macro
Posted by
Andrew Gould
on 10 May 2013
VBA, or Visual Basic for Applications, is a powerful tool that you can use to automate Microsoft Excel. This video introduces you to the basics of writing code in the VB Editor, including how to create a new module, how to write a subroutine, some best practice guidelines for laying out your code and adding comments, and how to write simple VBA instructions. We’ll also show you how to run the simple procedure that you’ll write, and how to ensure that you can save your code and reopen the file which contains it.
Excel VBA Part 3 — What To Do When Things Go Wrong
Posted by
Andrew Gould
on 10 May 2013
If you’ve written at least one subroutine in VBA you’ll probably already be familiar with the feeling of frustration when things don’t work! This video teaches you about the different types of error that you’re likely to encounter when programming in VBA and what to do when things go wrong. You’ll learn the difference between syntax, compile and runtime errors, when each type is likely to happen and we’ll even show you a few useful debugging techniques to help you when you’re trying to figure out what went wrong!
Excel VBA Part 4 — Buttons, Toolbars and Keyboard Shortcuts
Posted by
Andrew Gould
on 10 May 2013
As a developer you’ll be used to running most of your code from within the Visual Basic Editor environment. Your users, on the other hand, are more likely to require a simple interface (most likely involving buttons to click) that they can use to run your code. This video covers the main ways to provide users with the means to run your code including keyboard shortcuts, buttons and drawing objects with attached macros. We’ll even show you how to customise the ribbon and toolbars in Excel for that extra, professional touch!
Excel VBA Part 5 — Selecting Cells
Posted by
Andrew Gould
on 23 May 2013
You won’t get far in Excel VBA without understanding how to refer to cells! This fairly long video covers most of the common, and some uncommon, techniques for selecting and referring to cells. You’ll learn how to select cells by cell reference using the Range property, how to refer to cells by row and column number using the Cells property, and how to refer to the currently selected cell using the Activecell property. We also cover how to select multiple cells and how to refer to range names as well as a variety of relative selection tricks such as using the End property to jump to the bottom of a list, using the Offset property to move a specific number of rows and columns, and how to select an entire region of data with one simple instruction. Along the way you’ll also learn several techniques for formatting and modifying cells, as well as how to copy and paste data in VBA.
Excel VBA Part 6 — Worksheets, Charts and Sheets
Posted by
Andrew Gould
on 09 November 2013
In order to navigate a workbook using VBA it’s essential to understand how to refer to, activate and select the various types of sheet. This video explains the difference between worksheet, chart and sheet objects and also demonstrates how to select, copy, move, delete and rename them. You’ll also see how to change the visibility of the sheets in a workbook, including how to make sheets not just hidden, but VERY hidden!
Excel VBA Part 7 — Working with Workbooks
Posted by
Andrew Gould
on 17 January 2014
This video explains the basics of working with Workbooks in Excel VBA. You’ll learn several techniques for referring to workbooks, including the difference between ActiveWorkbook and ThisWorkbook. You’ll also find out how to open existing workbooks and create new ones, including how to create a workbook based on a template. Finally, the video looks at various techniques for saving files, including how to provide a filename and a location, and how to change the file type.
Excel VBA Part 8 — Variables in VBA
Posted by
Andrew Gould
on 21 January 2014
Variables are essential in all sorts of programming languages, and VBA is no exception. This video takes you through the basics of working with simple data-type variables and will explain the difference between non-declared and explicitly-declared variables, including why explicitly-declared variables are worth the effort! You’ll see how to choose the best data type for your variables as well as learn about the consequences if you get it wrong. Finally you’ll find out what the ‘scope’ of a variable means and how to set the scope appropriately for the subroutine that you’re writing.
Excel VBA Part 9 — Object Variables
Posted by
Andrew Gould
on 22 January 2014
Object variables in VBA allow you to store references to objects in memory. They’re slightly more complex to use than basic data-type variables, but well worth the effort and this video explains why! You’ll learn how to declare object variables and how to set references to existing objects. The video also shows you how to return references to objects using the methods of other objects with examples including generating new workbooks and worksheets, as well as using the Find method to reference cells.
Excel VBA Part 10 — Message Boxes
Posted by
Andrew Gould
on 23 January 2014
Message boxes in VBA provide a convenient way to display information to a user. This video shows you all you need to know to get started with showing messages, customising the message box and using it to ask users for input.
Excel VBA Part 11 — Input Boxes
Posted by
Andrew Gould
on 27 January 2014
In VBA an Input Box is a convenient way to ask users for information. This video shows you how to display and customise a basic inputbox, and how to capture the result using cells or variables. You’ll also see what happens if a user cancels from the inputbox and how to test if that happens. The final part of the video goes into more technical detail on returning inputbox results to variables with different data types.
Excel VBA Part 11a — Application.InputBox
Posted by
Andrew Gould
on 03 November 2014
If you’ve used the generic InputBox function in VBA you may be frustrated by its limitations. This video shows you how to use the far superior Application.InputBox method. You’ll learn how to specify the data type returned by the InputBox and how to use its built-in validation feature to control what users can enter. The video also covers how to return a simple formula and a more complex function from the InputBox and also how to allow users to select a range of cells which can then be referenced by your VBA code. The final part of the video covers a more complex example in which the InputBox returns an array of values which can be looped over and manipulated in various ways.
Excel VBA Part 12 — With Statements
Posted by
Andrew Gould
on 30 January 2014
A With Statement in VBA is a great way to make your code a lot neater and a bit more efficient. This short video shows you how to use With statements in your code and explains why they can be so useful.
Excel VBA Part 13.1 — If Statements in VBA
Posted by
Andrew Gould
on 31 January 2014
An IF Statement allows you to test whether a condition is met and then perform different actions based on the result. This video takes you from writing simple IF statements, through nested Ifs, ElseIfs and even how to combine logical tests using the And and Or operators.
Excel VBA Part 14.1- Select Case Statements
Posted by
Andrew Gould
on 03 February 2014
Select Case statements in VBA are similar to If statements in that they allow to test whether conditions are met and perform different actions based on the result. This video explains how to use Select Case statements in your code, including the various ways to phrase a logical test, how to separate numbers into bands, how to test for lists of values and how to create nested Select Case statements.
Excel VBA Part 15.1 — Do Until and Do While Loops
Posted by
Andrew Gould
on 06 February 2014
Do Loops in VBA allow you to carry out a set of instructions repeatedly until some kind of condition is met. This video teaches you about the basics of the Do Loop statement including how to write Do Until and Do While loops, where to place your conditional statements and how to exit from a loop. The final part of the video provides a couple of longer examples using Do Loops.
Excel VBA Part 16 — For Next Loops
Posted by
Andrew Gould
on 07 February 2014
You can use a For Next Loop to tell your program to repeat a set of instructions a number of times. This video teaches you how to construct a For Next statement, how to control how many times your loop will run, as well as which direction it will run in. The video also includes several practical examples of using a For Next Loop to process the items in a collection such as worksheets, workbooks and cells.
Excel VBA Part 17 — For Each Loops
Posted by
Andrew Gould
on 10 February 2014
A For Each Loop is used to loop over a collection of objects and there are lots of good reasons for wanting to do that in Excel VBA! This video takes you from the basics of the For Each Next statement and using object variables through several examples of looping over worksheets, workbooks, chartobjects and cells and, finally, into writing nested loops for even more power.
Excel VBA Part 18 — Creating Functions
Posted by
Andrew Gould
on 17 February 2014
A VBA function is a procedure that can return a value and this video teaches you how to create them. You’ll learn how to declare a function and how to add parameters, including optional parameters and default values. You’ll also see several ways to call the functions you’ve written, including from other VBA procedures and from an Excel worksheet. The video also talks about how to rewrite existing subroutines to replace repetitive code with functions.
Excel VBA Part 19 — Error Handling
Posted by
Andrew Gould
on 24 February 2014
Almost every procedure you write in VBA has the potential to go wrong at some point! Writing error handling code allows your procedures to fail gracefully instead of dumping the user out into the run time error dialog box. This video teaches you all about the On Error statement including how to ignore errors, how to trigger a custom error handler and how to resume running your code after an error has occurred. Towards the end of the video you’ll also encounter the Err object which allows you to interrogate the error that has occurred and even raise your own custom errors.
Excel VBA Part 20 — Event Procedures
Posted by
Andrew Gould
on 28 February 2014
Writing Event Procedures allows you to create subroutines which run automatically in response to events in a workbook. This video teaches you how to access the events of an object and start writing event procedures for both workbooks and worksheets. You’ll also see how to cancel certain events and how to disable events, as well as how to use the parameters of an event procedure.
Excel VBA Part 21 — User Forms
Posted by
Andrew Gould
on 28 February 2014
Designing a User Form in VBA is a great way to allow you users to interact with your workbook. This video teaches you how to create forms, how to add controls and manipulate their properties and how to add code the events of the form to make it respond to user actions. You’ll also get an insight into how much code goes into performing even very simple validation to control what your users can do with the form.
Why do we write If Not Is Nothing in Excel VBA?
Posted by
Andrew Gould
on 03 April 2021
This video explains how to write a variety of logical tests using If statements in Excel VBA. You’ll learn the long and short versions of testing if something is True or False and the difference between testing a value and a reference to an object. You’ll see how to use the Is keyword and the Not keyword and understand why we sometimes write the pattern «If Not … Is Nothing Then».
This page has 10 threads
Add post
17 Sep 19 at
18:15
Dear Wise Owl,
How can I use VBA to copy one specific sheet from each workbook which located from one path to current workbook?
The specific sheet will be named as the same as the name from each file in the current workbook.
Thanks in advance!
19 Sep 19 at
09:08
We don’t usually answer technical queries (we’d never get any of our training or blog/video development done otherwise), but I’ll leave this question on her in case anyone else can answer … ?
01 Aug 18 at
12:17
Hi,
In this video, you mentioned the singular is usually the object in the collection, eg worksheet is an object of the collection of worksheets (plural).
You mentioned usually.
What are the exceptions?
Thanks
03 Aug 18 at
08:41
The most notable one, I think, is Range. A range can be a single cell as well as a collection of other cells.
Using the For Each loop to process a range works differently. In most cases, to process a collection with a For Each loop, you declare a variable whose type is the singular object, e.g. Dim c As Chart. You then use the plural name of the collection in the loop, e.g. For Each c in Charts. The relationship holds true for most examples — Worksheet:Worksheets, Workbook:Workbooks, Shape:Shapes, PivotTable:PivotTables, etc.
To process a range with a For Each loop, you would use the singular object to declare the variable, e.g. Dim r As Range. You would not, however, use Ranges as the name of the collection. Instead, you must specify the range of cells you wish to loop over. This provides a large amount of flexibility, as many properties and methods return a reference to a range object. Any of the examples below are valid:
For Each r In Range(«A1:A10»)
For Each r In Range(«A1»).CurrentRegion
For Each r In ActiveSheet.Cells
For Each r In Selection
04 Aug 18 at
15:25
One thing I noticed from watching your collections video is this. Normally to loop over a collection, you define a variable of the same type as the collection. For example:
Dim ws as Worksheet
For Each ws In ThisWorkbook.Worksheets
Next ws
So assuming that’s a «rule» I tried this, which obviously failed:
Dim MyColl As Collection
Dim MyCollElement As Collection
For Each MyCollElement In MyColl
Next MyCollElement
thinkg that since I’m looping over a collection (MyColl), I must define a variable of the same type, MyCollElement, as a Collection too!
07 Jun 18 at
01:04
Hi, I have created a custom ribbon and attached a macro to this item in excel. My question is how do I make this custom ribbon/button available on each end user’s terminal? The macro-enabled document is located on a shared folder through which all users have equal access. However, the custom ribbon/button is not available to all users when opening the same workbook.
Can you kindly help or instruct accordingly please?
07 Jun 18 at
07:21
Hi, you can share your custom ribbon configuration with other users as described here.
I hope that helps!
07 Jun 18 at
15:03
Thanks for the quick response.
I am aware of the importation method but I was wondering if there was anything more versatile and dynamic. The end product would target many users on various terminals and it would be inefficient to have everyone import custom tools everytime a change, improvement or alteration is made .
Is it possible to have implicitly included in the code the ability to have real time updates for the custom toolbar or ribbon?
Thanks a lot for your help.
Andrew G
08 Jun 18 at
07:42
Hi, I think that the bottom answer on this page may help!
16 Nov 17 at
16:38
Hai Andrew G,
I just want to encrypt my VBA code. Apart from using password protection from tools menu, Is there any possible way to do that? If the user tries to open tne module then the code should be at an encrypted state. I do not think, using password is an effective way to protect my code because there is a way to break the password and to view the code.
16 Nov 17 at
19:14
17 Nov 17 at
02:13
Thanks Andrew G
I will try those…
15 Nov 17 at
10:26
Hai Andrew G,
Thankyou so much for your help. Is there any alternative ways to use firefox as a web browser in Excel VBA instead of IE. If any tutorial available for this case, kindly give me that link.
15 Nov 17 at
10:36
Hi Abishek, other than Selenium there’s a commercial tool available here https://imacros.net/ but I haven’t used it so don’t know how useful it will be!
15 Nov 17 at
13:45
Hi Andrew G, thank you so much.
14 Nov 17 at
09:07
Hai Andrew G,
Firstly, I would like to thankyou for this woderfull playlist of ExcelVBA. I have a request for you. Is it possible to view the progress status of the ongoing Macro through a status window. It should show the status as percentage.
Thankyou
14 Nov 17 at
10:42
15 Nov 17 at
03:29
Hai Andrew G,
Thanks Andrew that helps…. Also i have a lot of doubts in using selenium for webpage scraping. Currently i have installed SeleniumBasic-2.0.9.0 in my Windows 10 device. for example
{sub Frfox()
Dim SLNM As New WebDriver
SLNM.Start «firefox», «http://www.google.com»
end sub}
The above code only opens a new firefox window but the URL is not getting loaded. Please help me with this issue.
Andrew G
15 Nov 17 at
08:22
Hi Abishek, I’m sorry but I don’t have any experience with using Selenium so I can’t help you with this.
15 Jun 17 at
01:36
Hi,
I have gone through your vba videos and they all were awesome. i have one request if you can create one more video that shows dynamic auto filter. .
Surjit
15 Jun 17 at
07:32
Hi Surjit,
I have a list of videos that I’d love to find the time to make — I’ll add this one to it!
11 Mar 17 at
19:55
Hi!
First of all I would like to congratulate you for this incredible series of videos about VBA.
Through you, I have been able to improve and learn more and more my knowledge in Excel and VBA.
I would like to know if you are going to, or intend to release, any video about Regular Expressions (RegExp) for Excel / VBA?
It is a very interesting and very powerful subject for queries, validations, ect. But little used or demonstrated by the communities.
Again, thank you for the dedication and high quality of your teaching.
A hug from Brazil!
Maux
12 Mar 17 at
17:29
That’s the second question on Regular Expressions I’ve had this week! The topic has been on my list for some time, I simply haven’t had time to plan and create a video on the subject yet. Perhaps I should move this topic a little further up the list and aim to create something in the near future.
Thank you for the kind comments and for watching!
13 Mar 17 at
15:59
Thank you and congratulations again for the work you have done!
09 Mar 17 at
00:03
I’m developing an Excel VBA program, but I’m having a problem. I need to download a Captcha image from this site.
09 Mar 17 at
10:37
I think the answer is to use the URLDownloadToFile function, which you can see our video on here.
06 Dec 16 at
13:30
I have a workbook with 4 sheets. Three of these sheets have employees that are scheduled daily, the fourth is the actual schedule. What I would like to accomplish is when I schedule that person he or she is highlighted on the other sheets to help identify who we can and cannot use. I am fairly new to VBA, but extremely excited to learn something new. Thank you so much for you time and any assistance woould be greatly appreciated.
06 Dec 16 at
18:02
The question is a bit vague, and I suspect this answer won’t help much. What I’d do is follow through the videos or blogs on our website for now.
However, here’s a macro to colour in all the cells in range A1:A3 which contain the name Bill. You could obviously modify this to work with any range and any name.
Sub ColourPeople()
Dim PersonCell As Range
Dim PersonRange As Range
‘set a variable to refer to the range where people can be found
Set PersonRange = Range(«A1:A3»)
‘colour in all the people with the right name
For Each PersonCell In PersonRange.Cells
If PersonCell.Value = «Bob» Then
PersonCell.Interior.Color = vbGreen
End If
Next PersonCell
End Sub
Exactly when and how you’d call this macro would depend on exactly what you were trying to achieve.
Введение
Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в 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)
:
К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:
Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:
- Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:
- Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):
- Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)
Обычный макрос, введенный в стандартный модуль выглядит примерно так:
Давайте разберем приведенный выше в качестве примера макрос 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)
Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:
- Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (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):
- Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
- Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
- Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:
Кнопка на панели инструментов в Excel 2003 и старше
Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):
Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и новее
Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):
Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:
Кнопка на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:
- В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
- В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)
Выберите объект Кнопка (Button):
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.
Создание пользовательских функций на VBA
Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).
Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:
Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
Описание
Этот видеокурс подойдет для специалистов, постоянно использующих Excel в повседневной профессиональной деятельности и желающих научиться разбирать программный код на VBA и самостоятельно программировать макросы.
Содержание:
Тема 1. Запись макроса в Microsoft Excel 2016
- Автоматическая запись макроса
- Использование абсолютных и относительных ссылок
- Исправление недостатков программного кода
Тема 2. Работа в редакторе Visual Basic
- Создание проекта VBA
- Ввод и редактирование программного кода
- Запуск процедуры VBA
- Типы данных, переменные, константы
- Инструкции управления порядком выполнения команд
Тема 3. Программирование объектов Excel
- Понятие объектно-ориентированного программирования
- Модель объектов Excel
- Свойства и методы объекта Workbook
- Работа с диапазонами ячеек
Тема 4. Циклы:программирование многократных действий
- Цикл со счетчиком For…Next
- Циклы с условием Do…Loop
- Цикл по объектам For Each…Next
- Примеры циклических операций с ячейками и листами
Тема 5. Создание пользовательской функции
- Создание процедуры Function
- Использование пользовательской функции
- Решение типичных задач автоматизации с помощью пользовательских функций
Тема 6. Отладка и тестирование программы
- Типы ошибок
- Создание процедуры обработки ошибок Run-time
- Отладка и пошаговое тестирование
Тема 7. Автоматизация запуска макросов
- Настройка уровней безопасности
- Защита проекта VBA
- Создание пользовательских кнопок для запуска макросов
- Использование рабочих книг и листов
Автор: Алексей Козлов
Язык: русский
Формат: MP4 (+доп.файлы)
Видео: AVC, 1920×1080, ~452 Kbps
Аудио: AAC, 253 Kbps, 48.0 KHz
Пароль на все архивы: manshet.org