Макросы в excel сложение

Простая математика

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

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

Ну что ж, давайте посмотрим как вычислить элементарное.

Сложение

Сложим две ячейки. При использовании вычислительной техники нельзя забывать одно правило. Если по простому на бумаге все формулы пишут обычно в таком виде:

A + B = C

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

C = A + B

Так вот, наше сложение двух ячеек будет смотреться так:

Sub Primer()

Cells(1, 1) = Cells(1, 2) + Cells(1, 3)

End Sub

Это вырвжение говорит о том, что результат сложения ячеек В1 и С1 записывается в ячейке А1.

Сложим несколько ячеек:

Sub Primer()

Cells(1, 1) = Cells(1, 2) + Cells(1, 3) + Cells(1, 4)

End Sub

Возможно ли прибавить некоторую цифру к получившейся сумме? Конечно можно:

Sub Primer()

Cells(1, 1) = Cells(1, 2) + 8

End Sub

Вычитание

Вычитание аналогично как исложение:

Sub Primer()

Cells(1, 1) = Cells(1, 2) — Cells(1, 3)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) — Cells(1, 3) — Cells(1, 4)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) — 6

End Sub

Умножение

Умножение аналогично как исложение и вычитание:

Sub Primer()

Cells(1, 1) = Cells(1, 2) * Cells(1, 3)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) * Cells(1, 3) * Cells(1, 4)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) * 4

End Sub

Деление

Деление всё аналогично:

Sub Primer()

Cells(1, 1) = Cells(1, 2) / Cells(1, 3)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) / Cells(1, 3) / Cells(1, 4)

End Sub

Sub Primer()

Cells(1, 1) = Cells(1, 2) / 2

End Sub

Возникает один вопрос: А можно ли смешать эти действия?
Можно.

Sub Primer()

Cells(1, 1) = (Cells(1, 2) + Cells(1, 3)) * 2 — Cells(1, 4) / 6

End Sub

При работе с арифметическими операциями не забываем только это правило:

C = A + B

Ещё один важный момент при работе с переменными — это описание переменных. Об этом в уроке ниже.

Возможно кто-то задумался, а можно ли сразу задать нашей переменной некоторое значение? И это можно, но только называется это уже не переменная, а константа, которая описывается так:

Const ИМЯConst = …

или

Const A As Integer = 2323

При этом описывать её как переменную не следует. Наш код будет выглядеть, например, так:

Const AConst = 10

Sub Primer()

Dim C As Long

Dim B As Integer

B = 2

C = AConst + B

End Sub

или

Const A As Integer = 10

Sub Primer()

Dim C As Long

Dim B As Integer

B = 2

C = AConst + B

End Sub

Существует ещё такой тип описания переменной:

Private A As Integer

Но данное объявление переменной, видимо только в своём модуле.

Private A As Byte

Sub Primer()

Dim B As Integer

B = 2

A = A + B

End Sub

Без логики никуда. Всё программирование это логика. В VBA-Excel так же есть свои логические операторы. Ниже приведена таблица операторов их синтаксис, описание и таблица истинности.

Теперь рассмотри как они применяются на практике

Оператор AND

Естественно если у нас выражение логическое, то и начинаться оно может с условия Если. Вот например:

Private Sub CommandButton1_Click()

If Cells(3, 9) = 1 And Cells(3, 10) = 1 Then

Cells(3, 11) = 1

Else

Cells(3, 11) = 0

End If

End Sub

Теперь надо прояснить ситуацию. Если в ячейке Cells(3, 9) и ячейке Cells(3, 10) записана еденица, то в ячейке Cells(3, 11) так же записывается еденица, в противном случае в ячейке Cells(3, 11) прописывается ноль (в примере есть все логические примеры, можете скачать).

Но это не значит, что оно всегда должно начинаться с условия Если то. И не обязательно чтобы в выражении было два входных значения (в данном случае Cells(3, 9) = 1, Cells(3, 10)). Их модет быть столько сколько вы захотите. Например так:

Private Sub CommandButton1_Click()

If Cells(3, 9) = 1 And Cells(3, 10) = 1 And Cells(3, 11) = 1 Then

Cells(3, 12) = 1

Else

Cells(3, 12) = 0

End If

End Sub

Оператор OR

Тут всё аналогично, начинаем с Если и заканчиваем То. И также входных переменных может быть более двух.

Private Sub CommandButton2_Click()

If Cells(8, 9) = 1 Or Cells(8, 10) = 1 Then

Cells(8, 11) = 1

Else

Cells(8, 11) = 0

End If

End Sub

Оператор NOT

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

Private Sub CommandButton3_Click()

If Not Cells(13, 9) = 1 Then

Cells(13, 11) = 1

Else

Cells(13, 11) = 0

End If

End Sub

В этом случае у нас получается всё в точности противоположно истинне. Если в Cells(13, 9) записана еденица, то получается ноль, в противном случае — еденица (так сказать некий закон подлости).

Оператор XOR

Это что-то вроде оператора OR (или), но тут нет истинности при одинаковых значениях переменных.

Private Sub CommandButton4_Click()

If Cells(16, 9) = 1 Xor Cells(16, 10) = 1 Then

Cells(16, 11) = 1

Else

Cells(16, 11) = 0

End If

End Sub

Оператор EQV

Данный оператор так же опереирует двумя и более переменными.

Private Sub CommandButton5_Click()

If Cells(21, 9) = 1 Eqv Cells(21, 10) = 1 Then

Cells(21, 11) = 1

Else

Cells(21, 11) = 0

End If

End Sub

Но если Вы экспериментируете с несколькими переменными, то результат будет совершенно не ожиданный. Вот попробуйте. Это булева алгебра и её не обманешь :-)

Оператор IMP

Данный оператор тоже можно записать через условие Если То.

Private Sub CommandButton6_Click()

If Cells(26, 9) = 1 Imp Cells(26, 10) = 1 Then

Cells(26, 11) = 1

Else

Cells(26, 11) = 0

End If

End Sub

У кого-то может возникнуть вопрос: А можно ли эти операторы соединить в одном логическом выражении? Конечно можно.

Sub Primer()

A = 1

B = 0

C = 1

If A = 1 And B = 1 Or C = 1 Then

MsgBox «Истина 1», vbInformation, «Истина»

Else

MsgBox «Ложь 0», vbInformation, «Ложь»

End If

End Sub

МОДУЛЬ

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

Стандартный модуль

Стандартный модуль является самым популярным в VBA, раньше его называли модуль кода. Другими словами в стандартном модуле должны находиться все те процедуры, которые не относятся к событию книги или листа (о событиях книги и листа будет в уроках ниже). Тот код имя которому придумали лично Вы. Например, если вы добавляете на лист кнопку, и щёлкаете по ней два раза ЛКМ вы попадаете именно на тот лист в VBA, на котором находится кнопка (т.е. эта процедура от события листа). И носить она будет например такое название CommandButton1_Click():

Private Sub CommandButton1_Click()

…………

End Sub

А вот если мы напишем макрос с таким именем:

Sub Primer()

Dim i As Byte

Dim r As Integer

For i = 1 To 100 Step 1

r = r + i

Next i

MsgBox «Сумма чисел от 1 до 100 равняется » & r, vbInformation, «Сумма»

End Sub

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

Вставить модуль в документ очень просто. Заходим в окно VB и нажимаем на панели управления кнопкуInsert / Module.

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

Если вам не нравится как называется модуль, то вы можете придумать ему своё имя. Нажимаем на пиктограмму показанную ниже на рисунке и у Вас появляется окно, в котором можно изменить имя модуля.

Модуль класса

Модуль класса — это специальный тип модуля VBA, который можно добавить в наш проект. Этот модуль позволяет создавать новый класс объектов. При добавлении этого модуля программист уже должен понимать, что это уже управление объектами. Модуль класса позволяет создавать новые объекты, а также соответствующие для них свойства, методы и события.
Добавить этот модуль к себе в проект не сложно. Заходим в Insert / Class Module

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

В видеоуроке показано как добавлять модули в проект и как их переименовывать.

Запуск макроса
Привязка макроса к произвольному объекту

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

Дальше объект редактируем. Придаём ему нужный размер, заливку, оттенки, тени, изменить или добавить текст на объектк и т.п. Красивую настройку можно сделать нажав на правую кнопку мыши на объекте и выбрать пункт Формат фигуры или Формат рисунка. В видеоролике показано как можно сделать красивую кнопку.

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

После этого откроется окно, в котором будет список всех ваших макросов. Указываем необходимый макрос из этого списка и нажимаем ОК. Теперь указанный макрос будет запускаться при нажатии на эту фигуру ЛКМ.

Автоматическая запись макроса
Макрорекордер

Запись макроса — это очень полезная штука, которую придумал Microsoft. Вот например, Вы постоянно выполняете одну и ту же работу в книге Excel, и это вам уже надоело. Вот бы придумать такую штуку чтобы один раз показал как делается, а потом всё само на автомате, нажал кнопочку и сидишь такой довольный косынку раскладываешь, а программа сама работает. Вот именно это и придумали в Microsoft, только назвали всё это дело — Запись макроса.

Хорошо, что некоторые уже поняли о чём идёт речь. Так давай те же посмотрим что это такое и как им поскорее научиться пользоваться.

Запись макроса можно включить двумя способами:
1 — Заходим в вкладку разработчик и нажимаем пиктограмму Запись макроса:

2 — это нажимаем пиктограмму в нижнем левом углу окна книги:

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

Имя макроса — как всегда пишем латинскими буквами, можно добавить цифры (о том как можно называть макросы рассказывалось тут).
Сочетание клавишь — вы можете назначить некое сочетание клавишь и при их нажатии будет запускаться записанный макрос (а не с кнопочки или галочки).
Сохранить в — Вы сразу можете указать где будет храниться этот макрос. Если записанный макрос вам нужен только в этом документе, то можете сохранить его в текущей книге, а если нет, то можете выбрать другой вариант — новая книга или личная книга макросов.
Описание — говорит само за себя. Можете описать его предназначение и какую именно он будет выполнять операцию, дабы не забыть через некоторое время.

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

Или нажав на пиктограмму в левом нижнем углу книги

Существует два вида записи макросов — это запись с прямыми ссылками и запись с относительными ссылками.
Вот теперь давайте по подробнее.

Запись макроса с прямыми ссылками

Запись макроса с прямыми ссылками означает, что все наши действия, которые мы записали точно так же повторятся при воспроизведении макроса. Например, мы нажали Запись макроса и записали в ячейку А1 слово «Привет», в ячейку В1 «Пока», а в ячейку С1 «Привет». После этого остановили запись. Потом нажали выполнение записанного макроса, перед этим очистив ячеки и убрав курсор на совершенно другую ячйку, и у нас снова в Ячеке А1 появилось слово «Привет», в ячейке В1 «Пока», а в ячейке С1 «Привет». И куда бы мы не перемещли курсор и как бы мы не запускали макрос у нас запись будет производиться только в ячейках A1, B1 и C1.

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

Sub PrivetPoka()

‘ PrivetPoka Макрос

Range(«A1»).Select

ActiveCell.FormulaR1C1 = «Привет»

Range(«B1»).Select

ActiveCell.FormulaR1C1 = «Пока»

Range(«C1»).Select

ActiveCell.FormulaR1C1 = «Привет»

End Sub

На этом примере видно, что первоначально у нас происходит выделение ячейки и только потом занесение в неё текста. Поэтому как бы мы не старались выполнять макрос на других ячейках и занести в них текст у нас ничего не выйдёт, всё равно будет записываться в тех ячейках, в которых мы заносили текст при выполнении записи макроса. Об этом ярко выражено демонстрируют прямые ссылки (Range(«A1»).Select, Range(«B1»).Select, Range(«C1»).Select) в коде примера.

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

Запись макроса с относительными ссылками

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

При наведении на пиктограмму можно прочитать в подсказке суть этой записи. Но я всё таки попробую объяснить более подробней.
Итак, при включении данной опции записи у нас происходит запись макроса следующим образом. Если при записи прямыми ссылками у нас чётко прописывался адрес ячейки (А1), то в случае с записью относительной ссылки у нас запишется ссылка на начальное положение курсора, относительно которой будет происходить дальнейший отсчёт. Например у нас курсор находится в ячейке А1, мы написали в ней «Привет», затем переместили курсор в ячейку А2 и в ней записали «Пока», после этого переместили курсор на А3 и записали в ней «Привет». После этого мы останавливаем запись макровса и пытаемся его выполнить. Ставим курсор в ячейку А1 и унас автоматически в ячейке А2 записывается «Пока», а в ячейке А3 записывается «Привет». После этого перемещаем курсор в ячейку В1 и снова нажимаем выполнить макрос. При этом у нас в ячейке В1 будет «Привет», в ячейке В2 «Пока», в В3 «Привет». Это всё потому, что макрорекордер записывает относительные ссылки, т.е. ссылки произведённые относительно первоначального состояния курсора. Выглядеть этот код будет например так:

Sub PrivetPoka()

‘ PrivetPoka Макрос

ActiveCell.FormulaR1C1 = «Привет»

ActiveCell.Offset(0, 1).Range(«A1»).Select

ActiveCell.FormulaR1C1 = «Пока»

ActiveCell.Offset(0, 1).Range(«A1»).Select

ActiveCell.FormulaR1C1 = «Привет»

End Sub

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

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

У некоторых людей наверное сложилось такое впечатление, что можно и не изучать программирование Excel дальше, какие-то операторы, функции и прочую лабуду, если можно просто записать всю последовательность работы прямыми или относительными ссылками и потом это использовать. Может и так. Может кому-то больше и не надо. Но хочу сказать, что запись макроса и придумана для людей, которые не желают учиться. Которым просто нужен быстрый результат. Какую-то полноценную и интересную программу через макрорекордер сделать никогда не получится.
Лично я пользуюсь этой функцией только когда мне необходимо произвести составление какого-то шаблона таблицы и её оформление. Но после этого обязательно произвожу ручное редактирование записанного макроса, потому что мкрорекордер записывает очень много промежуточного, «ненужного», кода, который можно упростить и уменьшить раз в 10.

Определение активных составляющих книги

Мне кажется, многие загонялись таким вопросом как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А1, В4 и т.д. Вот сегодня я и покажу как это сделать, потому что очень удобно, когда ты знаешь активные элементы книги.

Номер активной строки

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

Sub Stroka()

s = ActiveCell.Row

MsgBox «Активная строка под номером » & s, vbInformation, «Активная строка»

End Sub

Номер активного столбца

Аналогично определению строки столбец определяется по такому же принципу, только в конце добавляется не строка, а столбец:

Sub Stolbec()

s = ActiveCell.Column

MsgBox «Активная столбец под номером » & s, vbInformation, «Активный столбец»

End Sub

Определяем номер последней заполненной строки

Stroka = ActiveSheet.Cells.Find(What:=»*», SearchDirection:=xlPrevious, _

SearchOrder:=xlByRows).Row

или

Stroka = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count — 1

Определяем номер последнего заполненного столбца

Stolbec = ActiveSheet.Cells.Find(What:=»*», SearchDirection:=xlPrevious, _

SearchOrder:=xlByRows).Column

или

Stolbec = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count — 1

Определяем активную ячейку

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

Sub yacheika()

sk = ActiveCell.Row

st = ActiveCell.Column

MsgBox «Активная ячейка имеет координаты Cells(» & sk & «,» & st & «)», _

vbInformation, «Активная ячейка»

End Sub

Адрес активной ячейки

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

Sub adres()

A = ActiveCell.Address

MsgBox «Абсолютный адрес активной ячейки — » & A, vbInformation, «Адрес»

End Sub

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

Sub adress()

A = ActiveCell.Address(0, 0)

MsgBox «Относительный адрес активной ячейки — » & A, vbInformation, «Адрес»

End Sub

В скобках оператора Address указано какое именно значение должно быть относительным, а какое абсолютным. Если Address(0,0), то и строка и столбец записаны относительными (первый ноль отвечает за строку, второй ноль — это столбец). Если в строке поставить вместо ноля еденицу, то строка будет абсолютным значением, а столбец относительным. Причём значения следующих записей равнозначны:

Address(1, 0) = Address(True, False)

Адрес выделенного диапазона ячеек

Адрес выделенного диапазона можно получить следующим образом

Sub diapazon()

a = Selection.Rows.Address(0, 0) ‘Через строку

b = Selection.Columns.Address(0, 0) ‘Через столбец

c = Selection.Address(0, 0)

MsgBox «Выделенный диапазон — » & a, vbInformation, «Адрес»

End Sub

При чём адрес выделенного диапазона можно получить как через столбец, так и через строку. И значения ab и c в выше приведённом примере абсолютно одинаковые.

Координаты выделенного диапазона

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

Sub Kdiapazon()

a = Selection.Row

b = Selection.Column

K1 = Cells(a, b).Address(0, 0)

aa = a + Selection.Rows.Count — 1

bb = b + Selection.Columns.Count — 1

K2 = Cells(aa, bb).Address(0, 0)

MsgBox «Первая координата выделенного диапазона — » & K1 & vbNewLine & _

«Вторая координата выделенного диапазона — » & K2, vbInformation, «Координаты»

End Sub

a — Определяет номер первой строки выделенного диапазона;
b — Определяет номер первого столбца выделенного диапазона;
K1 — Определяем первую координату выделенного диапазона;
aa — Определяем номер последней строки выделенного диапазона;
bb — Определяем номер пследнего столбца выделенного диапазона;
K2 — Определяем вторую координату выделенного диапазона;

Selection.Rows.Count — определяет количество строк в выделенном диапазоне;
Selection.Columns.Count — определяет количество столбцов в выделенном диапазоне;

У многих возник вопрос: А почему вычитаем единицу? Всё потому, что первая координата входит в выделенный диапазон и нам её надо не потерять.

Имя активной книги

Имя активной книги возможно вычислить такой записью:

Sub WorkbookName()

Name = ActiveWorkbook.Name

MsgBox «Имя активной книги — » & Name, vbInformation, «Имя активной книги»

End Sub

Имя активного листа

Имя активного листа можно определить так:

Sub SheetsName()

Name = ActiveSheet.Name

MsgBox «Имя активного листа — » & Name, vbInformation, «Имя активного листа»

End Sub

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

Вычисление суммы числовых аргументов или значений диапазона ячеек с помощью кода VBA Excel. Метод WorksheetFunction.Sum – синтаксис, примеры.

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

Синтаксис метода WorksheetFunction.Sum:

WorksheetFunction.Sum(Arg1, Arg2, Arg3, ..., Arg30)

  • Arg – аргумент, который может быть числом, переменной, выражением. Тип данных — Variant. Максимальное количество аргументов – 30.
  • Метод WorksheetFunction.Sum возвращает значение типа Double.

Значение функции рабочего листа Sum может быть присвоено:

  • переменной числового типа Double или универсального типа Variant (при использовании числовых переменных других типов возможны недопустимые округления значений, возвращаемых методом WorksheetFunction.Sum);
  • выражению, возвращающему диапазон ячеек (точнее, возвращающему свойство Value диапазона, которое является свойством по умолчанию и его в выражениях можно не указывать);
  • другой функции в качестве аргумента.

Примеры вычисления сумм в коде VBA

Пример 1

Присвоение значений, вычисленных методом WorksheetFunction.Sum, переменной:

Sub Primer1()

Dim a As Integer

  a = WorksheetFunction.Sum(5.5, 25, 8, 28)

MsgBox a

  a = WorksheetFunction.Sum(4.5, 25, 8, 28)

MsgBox a

End Sub

Наверно, вы удивитесь, но информационное окно MsgBox дважды покажет одно и то же число 10. Почему так происходит?

Дело в том, что переменная a объявлена как целочисленная (Integer). Дробные числа, возвращенные функцией рабочего листа Sum, были округлены, а в VBA Excel применяется бухгалтерское округление, которое отличается от общепринятого.

При бухгалтерском округлении 10.5 и 9.5 округляются до 10. Будьте внимательны при выборе типа переменной.

Пример 2

Вычисление суммы значений диапазона ячеек, расположенного на текущем листе:

Sub Primer2()

‘Итог в 6 ячейке столбца «A»

Cells(6, 1) = WorksheetFunction.Sum(Cells(1, 1), Cells(2, 1), _

Cells(3, 1), Cells(4, 1), Cells(5, 1))

‘Итог в 6 ячейке столбца «B»

Range(«B6») = WorksheetFunction.Sum(Range(Cells(1, 2), Cells(5, 2)))

‘Итог в 6 ячейке столбца «C»

Range(«B6»).Offset(, 1) = WorksheetFunction.Sum(Range(«C1:C5»))

‘Присвоение суммы диапазону ячеек

Range(«A8:C10») = WorksheetFunction.Sum(Range(«A1:C5»))

End Sub

Если хотите проверить работу кода в своем редакторе VBA, заполните на рабочем листе Excel диапазон A1:C5 любыми числами.

Самая удобная формулировка по моему мнению:

Cells(10, 6) = WorksheetFunction.Sum(Range(Cells(2, 6), Cells(9, 6))) ,

где вместо номеров строк и столбцов можно использовать переменные.

Пример 3

Вычисление суммы значений диапазона ячеек, расположенного на другом листе:

Sub Primer3()

Лист1.Cells(3, 10) = WorksheetFunction.Sum(Range(Лист2.Cells(2, 5), Лист2.Cells(100, 5)))

End Sub

Пример 4

Самый простой пример, где метод WorksheetFunction.Sum используется в качестве аргумента другой функции:

Sub Primer4()

MsgBox WorksheetFunction.Sum(24, 5, 8 * 2)

End Sub

В данном случае значение функции рабочего листа Sum является аргументом функции MsgBox.


Возможно, вам интересно, откуда я взял, что функция рабочего листа (WorksheetFunction) является объектом, а сумма (Sum) ее методом? Из справки Microsoft.

Смотрите также статьи о методах WorksheetFunction.SumIf (суммирование с одним условием) и WorksheetFunction.SumIfs (суммирование с несколькими условиями).


In Excel, you can use VBA to calculate the sum of values from a range of cells or multiple ranges. And, in this tutorial, we are going to learn the different ways that we can use this.

Sum in VBA using WorksheetFunction

In VBA, there are multiple functions that you can use, but there’s no specific function for this purpose. That does not mean we can’t do a sum. In VBA, there’s a property called WorksheetFunction that can help you to call functions into a VBA code.

sum-in-vba-using-worksheet

Let sum values from the range A1:A10.

  1. First, enter the worksheet function property and then select the SUM function from the list.
    2-enter-worksheet-function
  2. Next, you need to enter starting parenthesis as you do while entering a function in the worksheet.
    3-starting-parenthesis
  3. After that, we need to use the range object to refer to the range for which we want to calculate the sum.
    4-use-the-range-object
  4. In the end, type closing parenthesis and assign the function’s returning value to cell B1.
    5-closing-parenthesis
Range("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))

Now when you run this code, it will calculate the sum for the values that you have in the range A1:A10 and enter the value in cell B1.

run-the-code-to-calculate

Sum Values from an Entire Column or a Row

In that just need to specify a row or column instead of the range that we have used in the earlier example.

'for the entire column A
Range("B1") = Application.WorksheetFunction.Sum(Range("A:A"))

'for entire row 1
Range("B1") = Application.WorksheetFunction.Sum(Range("1:1"))

Use VBA to Sum Values from the Selection

Now let’s say you want to sum value from the selected cells only in that you can use a code just like the following.

Sub vba_sum_selection()

Dim sRange As Range
Dim iSum As Long

On Error GoTo errorHandler

Set sRange = Selection

iSum = WorksheetFunction.Sum(Range(sRange.Address))
MsgBox iSum

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

In the above code, we have used the selection and then specified it to the variable “sRange” and then use that range variable’s address to get the sum.

The following code takes all the cells and sum values from them and enters the result in the selected cell.

Sub vba_auto_sum()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.End(xlUp).End(xlUp).Address
iLast = Selection.End(xlUp).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Sum(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Sum a Dynamic Range using VBA

And in the same way, you can use a dynamic range while using VBA to sum values.

Sub vba_dynamic_range_sum()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.Offset(1, 1).Address
iLast = Selection.Offset(5, 5).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Sum(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Sum a Dynamic Column or a Row

In the same way, if you want to use a dynamic column you can use the following code where it will take the column of the active cell and sum for all the values that you have in it.

Sub vba_dynamic_column()

Dim iCol As Long

On Error GoTo errorHandler

iCol = ActiveCell.Column
MsgBox WorksheetFunction.Sum(Columns(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

And for a row.

Sub vba_dynamic_row()

Dim iRow As Long

On Error GoTo errorHandler

iRow = ActiveCell.Row

MsgBox WorksheetFunction.Sum(Rows(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Using SUMIF with VBA

Just like sum you can use the SUMIF function to sum values with criteria just like the following example.

sumif-with-vba
Sub vba_sumif()

Dim cRange As Range
Dim sRange As Range

Set cRange = Range("A2:A13")
Set sRange = Range("B2:B13")

Range("C2") = _
WorksheetFunction.SumIf(cRange, "Product B", sRange)

End Sub

Содержание

  • Итоговый рабочий лист
  • Присвоение результата суммы переменной
  • Суммировать объект диапазона
  • Суммировать несколько объектов диапазона
  • Суммировать весь столбец или строку
  • Суммировать массив
  • Использование функции SumIf
  • Формула суммы

Из этого туториала Вы узнаете, как использовать функцию Excel Sum в VBA.

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

Итоговый рабочий лист

Объект WorksheetFunction можно использовать для вызова большинства функций Excel, доступных в диалоговом окне «Вставить функцию» в Excel. Функция СУММ — одна из них.

123 Sub TestFunctionДиапазон («D33») = Application.WorksheetFunction.Sum («D1: D32»)Конец подписки

В функции СУММ может быть до 30 аргументов. Каждый из аргументов также может относиться к диапазону ячеек.

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

123 Sub TestSum ()Диапазон («D10») = Application.WorksheetFunction.SUM («D1: D9»)Конец подписки

В приведенном ниже примере добавляется диапазон в столбце D и диапазон в столбце F. Если вы не введете объект Application, он будет принят.

123 Sub TestSum ()Диапазон («D25») = WorksheetFunction.SUM (Диапазон («D1: D24»), Диапазон («F1: F24»))Конец подписки

Обратите внимание, что для одного диапазона ячеек вам не нужно указывать слово «Диапазон» в формуле перед ячейками, это предполагается кодом. Однако, если вы используете несколько аргументов, вам нужно это сделать.

Присвоение результата суммы переменной

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

1234567 Sub AssignSumVariable ()Тусклый результат как двойной’Назначьте переменнуюрезультат = WorksheetFunction.SUM (Диапазон («G2: G7»), Диапазон («H2: H7»))’Показать результатMsgBox «Всего диапазонов» & результатКонец подписки

Суммировать объект диапазона

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

123456789 Sub TestSumRange ()Dim rng As Range’назначить диапазон ячеекУстановить rng = Range («D2: E10»)’используйте диапазон в формулеДиапазон («E11») = WorksheetFunction.SUM (rng)’отпустить объект диапазонаУстановить rng = ничегоКонец подписки

Суммировать несколько объектов диапазона

Точно так же вы можете суммировать несколько объектов диапазона.

123456789101112 Sub TestSumMultipleRanges ()Dim rngA As ДиапазонDim rngB as Range’назначить диапазон ячеекУстановите rngA = Range («D2: D10»)Установите rngB = Range («E2: E10»)’используйте диапазон в формулеДиапазон («E11») = WorksheetFunction.SUM (rngA, rngB)’отпустить объект диапазонаУстановите rngA = NothingУстановить rngB = НичегоКонец подписки

Суммировать весь столбец или строку

Вы также можете использовать функцию Sum, чтобы сложить весь столбец или всю строку

Эта процедура ниже суммирует все числовые ячейки в столбце D.

123 Sub TestSum ()Диапазон («F1») = WorksheetFunction.SUM (Диапазон («D: D»)Конец подписки

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

123 Sub TestSum ()Диапазон («F2») = WorksheetFunction.SUM (Диапазон («9: 9»)Конец подписки

Суммировать массив

Вы также можете использовать WorksheetFunction.Sum для суммирования значений в массиве.

123456789101112 Sub TestArray ()Dim intA (от 1 до 5) как целое числоDim SumArray как целое число’заполнить массивintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40’сложите массив и покажите результатMsgBox WorksheetFunction.SUM (intA)Конец подписки

Использование функции SumIf

Еще одна функция рабочего листа, которую можно использовать, — это функция СУММЕСЛИ.

123 Sub TestSumIf ()Диапазон («D11») = WorksheetFunction.SUMIF (Диапазон («C2: C10»), 150, Диапазон («D2: D10»))Конец подписки

Приведенная выше процедура суммирует только ячейки в диапазоне (D2: D10), если соответствующая ячейка в столбце C = 150.

Формула суммы

Когда вы используете Рабочий лист Функция. СУММ чтобы добавить сумму к диапазону на листе, возвращается статическая сумма, а не гибкая формула. Это означает, что при изменении ваших цифр в Excel значение, возвращаемое Рабочий лист не изменится.

В приведенном выше примере процедура TestSum суммировала диапазон (D2: D10), и результат был помещен в D11. Как вы можете видеть в строке формул, это число, а не формула.

Если любое из значений изменится в диапазоне (D2: D10), результат в D11 будет НЕТ изменение.

Вместо использования Рабочий лист Функция. СУММ, вы можете использовать VBA для применения функции суммы к ячейке с помощью Формула или Формула R1C1 методы.

Формула Метод

Метод формулы позволяет указать конкретный диапазон ячеек, например: D2: D10, как показано ниже.

123 Sub TestSumFormulaДиапазон («D11»). Формула = «= СУММ (D2: D10)»Конец подписки

Метод FormulaR1C1

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

123 Sub TestSumFormula ()Диапазон («D11»). FormulaR1C1 = «= СУММ (R [-9] C: R [-1] C)»Конец подписки

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

123 Sub TestSumFormula ()ActiveCell.FormulaR1C1 = «= СУММ (R [-9] C: R [-1] C)»Конец подписки

Где бы вы ни находились на своем листе, формула складывает 8 ячеек прямо над ней и помещает ответ в вашу ActiveCell. На диапазон внутри функции SUM следует ссылаться с использованием синтаксиса Row (R) и Column (C).

Оба эти метода позволяют использовать динамические формулы Excel в VBA.

Теперь вместо значения в D11 будет формула.

Вы поможете развитию сайта, поделившись страницей с друзьями

1 / 1 / 0

Регистрация: 23.11.2014

Сообщений: 9

03.02.2015, 14:28

19

Alex77755 спасибо но не работает, но я так понимаю, что я написал сумбурно и нормально не расписал, что нужно , да а таблица я имел ввиду, что не заполненная весит 9 мб, она без чисел, она просто вся в формулах и они тяжелые получаются.
У меня ячейка M2 в нее выводиться решение =ЕСЛИ(ЕТЕКСТ(C2);(I2*(J2-K2))/2;I2*(J2-K2))
Если в ячейка C2 заполнена текстом, то выводиться одно решение, если нет то другое и у меня вопрос, над которым я бъюсь уже 3 дня, как в этой же формуле =ЕСЛИ(ЕТЕКСТ(C2);(I2*(J2-K2))/2;I2*(J2-K2)) прописать
Если в ячейке B2=Первый или B2=Второй, то считает (I2*(J2-K2))/2, если нет этих значений первый и второй (а просто пусто или другое значение), то считает I2*(J2-K2) и если в ячейке C2 есть текст и в B2 есть первый или второй, то считает ((I2*(J2-K2))/2)/2, если С2 пустое, а в B2 есть первый или второй, то (I2*(J2-K2))/2, если в B2 нет первый или второй (а другое значение или пусто) то I2*(J2-K2) и если С2 и B2 (пусто или другое значение), то I2*(J2-K2) и выводить значение в ячейке M2 (прописать это для ячейки M2) и обязательно возможность прописать в ручную данные в ячейке M2, если нужна ручная кориектировка.
Емае, если написал словами, формулой у меня получается частично =ЕСЛИ(ЕОШ(ПОИСК(«Агапова»;B2));I2*(J2-K2);(I2*(J2-K2))/2), а полноценно ни как.
А если это можно написать на VBA, то будет вообще бомба. Я могу оставить так как есть и писать руками, но хочется, что бы само считало. Помогите плиз.



0



In this Article

  • Sum WorksheetFunction
  • Assigning a Sum result to a Variable
  • Sum a Range Object
  • Sum Multiple Range Objects
  • Sum Entire Column or Row
  • Sum an Array
  • Using the SumIf Function
  • Sum Formula
    • Formula Method
    • FormulaR1C1 Method

This tutorial will show you how to use the Excel Sum function in VBA

The sum function is one of the most widely used Excel functions, and probably the first one that Excel users learn to use. VBA does not actually have an equivalent – a user has to use the built-in Excel function in VBA using the WorkSheetFunction object.

Sum WorksheetFunction

The WorksheetFunction object can be used to call most of the Excel functions that are available within the Insert Function dialog box in Excel. The SUM function is one of them.

Sub TestFunction
  Range("D33") = Application.WorksheetFunction.Sum("D1:D32")
End Sub

vba sum syntax

You are able to have up to 30 arguments in the SUM function. Each of the arguments can also refer to a range of cells.

This example below will add up cells D1 to D9

Sub TestSum()   
   Range("D10") = Application.WorksheetFunction.SUM("D1:D9")
End Sub

The example below will add up a range in column D and a range in column F. If you do not type the Application object, it will be assumed.

Sub TestSum()
   Range("D25") = WorksheetFunction.SUM (Range("D1:D24"), Range("F1:F24"))
End Sub

Notice for a single range of cells you do not have to specify the word ‘Range’ in the formula in front of the cells,  it is assumed by the code. However, if you are using multiple arguments, you do need to do so.

Assigning a Sum result to a Variable

You may want to use the result of your formula elsewhere in code rather than writing it directly back to and Excel Range. If this is the case, you can assign the result to a variable to use later in your code.

Sub AssignSumVariable()
   Dim result as Double
'Assign the variable
   result = WorksheetFunction.SUM(Range("G2:G7"), Range("H2:H7"))
'Show the result
  MsgBox "The total of the ranges is " &  result
End Sub

vba sum result

Sum a Range Object

You can assign a group of cells to the Range object, and then use that Range object with the WorksheetFunction object.

Sub TestSumRange()
   Dim rng As Range
'assign the range of cells
   Set rng = Range("D2:E10")
'use the range in the  formula
   Range("E11") = WorksheetFunction.SUM(rng)
'release the range object
  Set rng = Nothing
End Sub

Sum Multiple Range Objects

Similarly, you can sum multiple Range Objects.

Sub TestSumMultipleRanges() 
   Dim rngA As Range 
   Dim rngB as Range
'assign the range of cells 
   Set rngA = Range("D2:D10") 
   Set rngB = Range("E2:E10")   
'use the range in the formula 
Range("E11") = WorksheetFunction.SUM(rngA, rngB)
 'release the range object
  Set rngA = Nothing 
  Set rngB = Nothing
End Sub

Sum Entire Column or Row

You can also use the Sum function to add up an entire column or an entire row

This procedure below will add up all the numeric cells in column D.

Sub TestSum()    
   Range("F1") = WorksheetFunction.SUM(Range("D:D")
End Sub

While this procedure below will add up all the numeric cells in Row 9.

Sub TestSum()     
   Range("F2") = WorksheetFunction.SUM(Range("9:9") 
End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

automacro

Learn More

Sum an Array

You can also use the WorksheetFunction.Sum to add up values in an array.

Sub TestArray()
   Dim intA(1 To 5) As Integer
   Dim SumArray As Integer
'populate the array
   intA(1) = 15
   intA(2) = 20
   intA(3) = 25
   intA(4) = 30
   intA(5) = 40
'add up the array and show the result
   MsgBox WorksheetFunction.SUM(intA)
End Sub

Using the SumIf Function

Another worksheet function that can be used is the SUMIF function.

Sub TestSumIf()
Range("D11") = WorksheetFunction.SUMIF(Range("C2:C10"), 150, Range("D2:D10"))
End Sub

The procedure above will only add up the cells in Range(D2:D10) if the corresponding cell in column C = 150.

vba sumif value

Sum Formula

When you use the WorksheetFunction.SUM to add a sum to a range in your worksheet, a static sum is returned, not a flexible formula. This means that when your figures in Excel change, the value that has been returned by the WorksheetFunction will not change.

vba sum static

In the example above, the procedure TestSum has added up Range(D2:D10) and the result has been put in D11. As you can see in the formula bar, this result is a figure and not a formula.

If any of the values change therefore in the Range(D2:D10), the result in D11 will NOT change.

Instead of using the WorksheetFunction.SUM, you can use VBA to apply a Sum Function to a cell using the Formula or FormulaR1C1 methods.

VBA Programming | Code Generator does work for you!

Formula Method

The formula method allows you to point specifically to a range of cells eg: D2:D10 as shown below.

Sub TestSumFormula
  Range("D11").Formula = "=SUM(D2:D10)"
End Sub

vba sum formula 1

FormulaR1C1 Method

The FromulaR1C1 method is more flexible in that it does not restrict you to a set range of cells. The example below will give us the same answer as the one above.

Sub TestSumFormula()
   Range("D11").FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
End Sub

vba sum formula

However, to make the formula more flexible, we could amend the code to look like this:

Sub TestSumFormula() 
   ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)" 
End Sub

Wherever you are in your worksheet, the formula will then add up the 8 cells directly above it and place the answer into your ActiveCell. The Range inside the SUM function has to be referred to using the Row (R) and Column (C) syntax.

Both these methods enable you to use Dynamic Excel formulas within VBA.

There will now be a formula in D11 instead of a value.

Skip to content

На чтение 3 мин. Просмотров 1.6k.

Что делает макрос: При создании сводной таблицы Excel, по умолчанию, суммирует данные для подсчета или суммирования элементов. Если все ячейки в столбце содержат числовые данные, Excel выбирает сумму. Если поле, которые вы добавляете содержат пробел или текст, Excel выбирает Количество.
Хотя во многих случаях поля, которые должны быть суммированы на законных основаниях, содержат пробелы. В этих случаях мы вынуждены вручную изменять тип вычислений.
Макрос в этом разделе направлен на оказание помощи путем автоматической установки типа расчета каждого элемента данных на Sum.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Этот макрос выполняет цикл по каждому полю данных в сводной таблице и изменяет свойство функции к xlSum. Вы можете изменить этот макрос, чтобы использовать один из вариантов расчета: xlCount, xlAverage, xlMin, xlMax и так далее. Когда вы идете в окно кода и вводите pf.Function =, вы видите выпадающий список вариантов.

Код макроса

Sub SummirovatZnacheniyaPoleiSvodnoi()
'Шаг 1: Объявляем переменные
Dim pt As PivotTable
Dim pf As PivotField
'Шаг 2: Наведите курсор на сводную таблицу в активной ячейке
On Error Resume Next
Set pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
'Шаг 3: Выход, если ячейка находится не в сводной таблице
If pt Is Nothing Then
MsgBox "Вы должны поместить курсор в сводную таблицу."
Exit Sub
End If
'Шаг 4: Цикл по полям сводной с применением суммы
For Each pf In pt.DataFields
pf.Function = xlSum
Next pf
End Sub

Как этот код работает

  1. Шаг 1 объявляет две переменные объекта. Он использует РТ, как контейнер памяти для сводной таблицы и PF в качестве контейнера память для полей данных. Это позволяет перебрать
    все поля данных в сводной таблице.
  2. Этот макрос устроен так, что мы предполагаем, активную сводную таблицу на основе активной ячейки. Активная ячейка должна быть внутри сводной таблицы для этого макроса. Предполагается, что, когда курсор находится внутри определенной сводной таблицы, мы хотим выполнить макрос действий на этом уровне. Шаг 2 устанавливает переменную pt в имя сводной таблицы, в которой находится активная ячейка. Мы делаем это, используя свойство ActiveCell.PivotTable.Name, чтобы получить имя целевой сводной. Если активная ячейка не находится внутри сводной таблицы, выдается ошибка. Вот почему мы используем On Error Resume Next. Это говорит Excel продолжить макрос, если есть ошибка.
  3. Шаг 3 проверяет, заполнена ли переменная pt объектом PivotTable. Если переменная pt в значении Nothing, активная ячейка не была включена в сводную таблицу, поэтому сводной таблице не может быть присвоена переменная. Если это так, мы сообщаем пользователю в окне сообщения, а затем выходим.
  4. Если макрос достиг шага 4, он успешно указал на сводную таблицу. Он использует оператор For Each, чтобы перебрать каждое поле данных. Каждый раз, когда новое поле сводной выбрано, он изменяет свойство Function, чтобы установить вычисление, используемое полем. В этом случае, мы устанавливаем все поля данных в сводной таблице на сумму. После того, как имя было изменено, мы переходим к следующему полю данных. После того, как все поля данных
  5. были оценены, макрос заканчивается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Понравилась статья? Поделить с друзьями:
  • Макросы для excel скачать торрент
  • Макросы в текстовом процессоре microsoft word
  • Макросы в excel скрыть строки по условию
  • Макросы для excel связи разорвать
  • Макросы в словах word