Страницы: 1
RSS
Удалить формулу и оставить значение
 
Доброго времени суток, уважаемые форумчане!
Есть небольшая проблема, как можно удалить формула и диапазона после того, как ячейка (из этого диапазона) станет не пустой?
Такой макрос не подходит:
Код
Sub Formulas_To_Values()
    Selection.Value = Selection.Value
End Sub

Я так понимаю надо связать проверку на пустоту и удаление формулы.
Спасибо!
 
Цитата
Saifer написал: Такой макрос не подходит
Почему?
 
Он удаляет Все формулы. А мне нужно удаление после того, как формула вычислелась.  
 
Ну так и выполняйте этот макрос после работы формулы.
 
Код
Sub ConvertToVaules()

If ActiveSheet.AutoFilterMode = True Then
        Dim rArea As Range
            For Each rArea In Selection.SpecialCells(xlCellTypeVisible).Areas
            rArea.Value = rArea.Value
            rArea.NumberFormat = "0"
        Next             
Else
        With Selection
            .NumberFormat = "0"
            .Value = .Value
        End With
End If

End Sub

Попробуйте такой код, он также лечит после того, как сделано Paste as values, когда числовые данные всеравно остаются текстом.
Изменено: alessandro2981 - 13.07.2015 17:44:46
 
Как этот макрос по диапазон загнать. У меня листе много формул.  
 
Вычисление отдельной формулы отследить нельзя - они все вычисляются либо исходя из взаимосвязей, либо все разом, если выполняется пересчет формул листа/книги. Формула может вычислиться, но вернуть все равно пустое значение. Следовательно надо знать, что Вы понимаете под фразой "после того, как формула вычислелась".
Если надо пропускать ячейки с пустым значением - то нужен цикл по каждой ячейке с проверкой на значение.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В моем случае,  когда ячейка с формулой стала Не пустой, необходимо удалить формулу,  чтобы остались значения. Т. Е. Это цикл на проверку пустых ячеек,  и если она Не пустая,  то удалить в ней формулу.  Это возможно?
 
Saifer, выложите файл-пример. Лень за Вас его делать.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Код
Sub Formulas_To_Values()
Dim c As Range
  For Each c In Selection.SpecialCells(xlCellTypeFormulas)
    If c <> "" Then c.Value = c.Value
  Next
End Sub
 
Последний вариант подошел. Заменил selection на range. А как его на автоматический режим поставить?  
 
Автоматический от чего? Я задавал вопрос - Вы проигнорировали. Что Вы под автоматически подразумеваете? Какое событие? Что должно произойти, чтобы код сработал?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
прошу прощение, если чем то обидел. Сам разобрался. Записал макрос в код листа,  где он будет сам проверять ячейки при заполнении. Всем спасибо, кто отписался по этой теме.
 
Цитата
Saifer написал: если чем то обидел
Да ничем не обидели. Просто Вы просите автоматизировать, а в какой момент не проясняете. Хорошо, что разобрались сами.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему
Наверх