Oops! It appears that you have disabled your Javascript. In order for you to see this page as it is meant to appear, we ask that you please re-enable your Javascript!
Главная / Софт / Excel: Замена формул значениями

Excel: Замена формул значениями

VBA.Excel.

Пришла мысль выложить мои маленькие скрипты для Excel. Постараюсь идти от простого к сложному (ну… от маленького к большему) — вдруг кому изучить поможет. Впрочем, скриптов у меня мало.

Итак, в приложения Microsoft Office встроен язык Visual Basic for Application (VBA) — близнец обычного Visual Basic (по крайней мере до 6 версии VB включительно). Его можно и нужно использовать для автоматизации рутинных операций. Все нижеизложенное относится к Excel 2003.

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

Для начала скриптик, который меняет формулы в ячейках на вычисленные значения. На случай, если надо зафиксировать результат. Открывайте Excel, нажимайте Alt F11 (или Сервис > Макрос > Редактор Visual Basic), создавайте новый модуль (Insert > Module) и поехали. Впрочем, задержитесь на секунду и дайте модулю осмысленное имя, желательно латиницей. И еще, если открыта не одна книга, посмотрите, где вы создаете модуль. Слева торчит дерево проекта (если не торчит, View > Project Explorer), там и выбирайте нужный. К сожалению, майкрософтовский офис не имеет общего хранилища для инструментов; скрипты обязательно привязываются к книге.

Теперь текст скрипта:

\’ FormulaToValue
\’ преобразует формулу в значение в выделенных ячейках

\’ Объявляем процедуру
Sub FormulaToValue()
\’ объявляем переменную cl, она будет иметь тип Range
Dim cl As Range

\’ перебираем все ячейки (автоматически записываемые в переменную cl)
\’ в выделеной пользователем части листа (Selection)
\’ для каждой из этих ячеек по отдельности выполняем инструкции в
\’ строчках между For… и Next
For Each cl In Selection
\’ присваиваем свойству значение (Value) каждой ячейки
\’ это же самое значение (смешно, да?)
cl.Value = cl.Value
Next
\’ выходим из процедуры
End Sub

По моему скромному, но верному мнению, комментариев достаточно. Кроме самой главной строчки.

cl.Value = cl.Value

Мы обращаемся к свойству Value объекта cl, а там лежит значение ячейки. Если ячейка вычисляемая, то все равно там содержится вычисленное значение, а формула — в свойстве Formula. Это же самое значение мы записываем обратно. При этом старое содержимое свойства Formula теряется, и ячейка сохраняет просто число (или текст, что там у вас было).

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

Запускать процедуру можно, выбирая ее в окошке макрос (Сервис > Макрос > Макросы… или Alt F8). Там же можно задать горячую клавишу для каждой процедуры. А можно повесить макрос на созданную кнопку в панели инструментов. Перед запуском необходимо выделить ячейки, над которыми будет проводиться операция. Помните, что зажав Ctrl, можно выделять несмежные ячейки.

Также читайте всю серию постов по VBA.
Text.ru - 100.00%

 

Про admin

Смотрите также

Принцип работы браузера Firefox portable

Принцип работы браузера Firefox portable

Чтобы использовать браузер Firefox portable нет необходимости устанавливать его. Нужно всего лишь скачать архив, включающий …

Добавить комментарий