Как преобразовать все формулы в диапазоне в значения

Что делает макрос: Этот макрос помогает преобразовать все формулы в заданном диапазоне в значения.

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

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

Код макроса

Sub PreobrazovatFormuliVZnacheniya()
'Щаг 1: Объявляем переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Сохраните книгу прежде, чем измените ячейки?
Select Case MsgBox("Перед изменением ячеек" & _
"Сохранить книгу?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Шаг 3: Определяем целевой диапазон
Set MyRange = Selection
'Шаг 4: Запускаем цикл по диапазону
For Each MyCell In MyRange
'Шаг 5: Если в ячейке есть формула, устанавливаем значение
If MyCell.HasFormula Then
MyCell.Formula = MyCell.Value
End If
'Шаг 6: Получаем следующую ячейку в диапазоне
Next MyCell
End Sub

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

  1. Шаг 1 объявляет две переменные объекта Range.
  2. При выполнении макрос уничтожает стек отката. Это означает, что вы не сможете отменить изменения, поэтому нужно сохранить книгу перед запуском макроса. Это делает Шаг 2.
  3. Здесь мы вызываем окно сообщения, которое спрашивает, хотим ли мы сохранить книгу в первую очередь. Затем он дает нам три варианта: Да, Нет и Отмена. Щелчок Да сохраняет книгу и продолжает с помощью макроса. Нажатие кнопки Отмена выходит из процедуры без запуска макроса. Щелчок Нет запускает макрос без сохранения рабочей книги.
  4. Шаг 3 заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице. Вы можете легко установить переменную MyRange в определенном диапазоне, таком как Range («A1:Z100»). Кроме того, если ваш целевой диапазон является именованный диапазон, вы можете просто ввести его имя: Range («MyNamedRange»).
  5. тот этап начинает цикл через каждую ячейку в целевом диапазоне, активизируя каждую ячейку. После того, как ячейка активируется, макрос использует свойство HasFormula, чтобы проверить, содержит ли ячейка формулу. Если содержит, мы устанавливаем ячейку равную значению, которое отображается в ячейке. Это эффективно заменяет формулу с жестко предопределенным значением.
  6. Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.

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

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

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