Зачем VBA приравнивает ячейку к самой себе | Why VBA Sets a Cell Equal to Itself
Macros Channel
0:00 / 0:00
Зачем VBA приравнивает ячейку к самой себе | Why VBA Sets a Cell Equal to Itself
173 просмотра · 6 дн. назад
Macros Channel
1,92 тыс. подписчиков
173 просмотра · 6 дн. назад
Подписывайтесь на Дзен «Макрос решает»:
https://dzen.ru/macroschannel
Телеграм с файлами и дополнительными материалами:
https://t.me/macroschannel
Курс «Access без программиста»:
https://goga.zone/u/macros/p/access-b...
Поддержать создание новых гайдов и практических материалов:
https://dzen.ru/macroschannel?donate=...
В этом уроке разбираем свойство Formula объекта Range в Excel VBA — как макросом получить формулу из ячейки, записать новую и при необходимости превратить результат вычисления в обычное число.
Для примера используется ячейка C9 с формулой суммирования диапазона A1:C6.
Сначала смотрим, как VBA возвращает формулу, уже записанную в ячейке:
Range("C9").Formula
Значение свойства можно вывести через MsgBox. Важно помнить: свойство Formula возвращает формулу в английском синтаксисе Excel, даже если в русской версии на листе используются русские названия функций.
Далее — обратная операция, запись формулы в ячейку из VBA. Свойству Formula присваивается выражение с английским названием функции SUM. После выполнения кода в C9 появляется обычная формула Excel, которая продолжает автоматически пересчитываться при изменении значений в диапазоне A1:C6.
В уроке показано:
— что делает свойство Range.Formula;
— как получить формулу из ячейки;
— как вывести её через MsgBox;
— почему VBA использует английские названия функций Excel;
— как записать формулу в ячейку программно;
— почему записанная через VBA формула остаётся динамической;
— как заменить формулу её рассчитанным значением;
— как работает конструкция Value = Value;
— почему свойство Value можно не указывать явно;
— как пошагово проверить выполнение макроса через F8.
Отдельно разбирается приём, который на первый взгляд выглядит бессмыслицей:
Range("C9").Value = Range("C9").Value
После выполнения этой строки формула исчезает, а в ячейке остаётся только её текущий результат. Слева VBA обращается к ячейке как к приёмнику значения, справа сначала вычисляет то, что в ней сейчас находится, — поэтому формула заменяется своим числом. Приём удобен, когда макрос должен сначала что-то рассчитать формулой Excel, а затем зафиксировать полученное число, чтобы оно больше не пересчитывалось при изменении исходного диапазона.
Также показывается сокращённая запись без явного Value, поскольку Value является свойством Range по умолчанию.
Урок полезен тем, кто уже начал работать с объектом Range и хочет перейти от простого чтения и записи значений к программному управлению формулами Excel.
#Excel #VBA #ExcelVBA #МакросыExcel #RangeFormula #FormulaVBA #АвтоматизацияExcel #ПрограммированиеExcel #МакросРешает
In this lesson we explore the Formula property of the Excel VBA Range object and learn how to read formulas from cells, write formulas with VBA and convert calculated formulas into fixed values.
The example uses cell C9 with a formula that sums the range A1:C6.
You will learn how to:
— read a formula from a cell with Range.Formula;
— display the formula using MsgBox;
— understand why VBA uses English Excel function names;
— write a formula into a worksheet cell from VBA;
— keep the inserted formula dynamically recalculating;
— replace a formula with its current calculated value;
— use Value = Value to freeze the result;
— omit the Value property because it is the default Range property;
— step through the macro using F8.
A useful technique shown in the lesson is:
Range("C9").Value = Range("C9").Value
This replaces the formula in C9 with its current calculated result, leaving only a fixed number in the cell. The right side is evaluated first and returns the current result, then it is written back into the same cell, so the formula is gone and only the number stays.
#Excel #VBA #ExcelVBA #ExcelMacros #RangeFormula #FormulaVBA #Automation #ExcelProgramming
📥 Файл из видео, готовый шаблон или макрос — заберите в Telegram:
https://t.me/macroschannel — подписывайтесь, там всё бесплатно и без рекламы.
📄 Полная пошаговая статья с кодом, скринами и объяснениями — на Дзене:
https://dzen.ru/macroschannel — подписывайтесь, там системные гайды по Excel, VBA, Office и автоматизации.
🎬 Подпишитесь на YouTube MACROSCHANNEL, если вы работаете с таблицами, отчётами или автоматизацией. У нас:
Пошаговые Excel-гайды
Макросы с объяснениями
Автоматизация без кода
Истории Microsoft и офисных программ
📥 Download the file, macro or Excel template from this video in our Telegram channel:
https://t.me/macroschannel — join us for free files, tools and exclusive content.
📄 Read the full step-by-step guide with code, screenshots, and explanations on Zen (Dzen):
https://dzen.ru/macroschannel — weekly tutorials on Excel, VBA, Office, automation and real tasks.
🎬 Subscribe to MACROSCHANNEL on YouTube if you work with spreadsheets, reports, or office workflows. We post:
Excel step-by-step tutorials
Explained macros and VBA code
Automation tips (with or without code)
Microsoft Office stories and productivity hacks