Страницы: 1
RSS
Формула-невидимка
 
Добрый день всем!

Пример привести, к сожалению, не могу - запрещено копировать файлы. Поэтому объясню на словах. Есть файл xls, в котором в ячейке С1 есть простейшая формула, например, =А1-В1. Интерес в том, что эту формулу в ячейке С1 не видно до тех пор, пока не заполнены ячейки А1 и В1. Когда они заполняются, С1 заполняется автоматически и формула видна. Как так можно сделать, подскажите?
 
Условное форматирование, цвет шрифта - белый
 
нет-нет, не видно не только в ячейке, но и строке, где пишутся формулы (не знаю, как она называется правильно), вверху, короче.
 
А если отключить макросы - феномен повторится? :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Макрос в код листа.
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Union(Range("A1"), Range("B1"))) Is Nothing Then
        Application.EnableEvents = False
        If Len(Range("A1")) > 0 And Len(Range("B1")) > 0 Then
            Range("C1").Formula = "=A1-B1"
        Else
            Range("C1").Value = Empty
        End If
        Application.EnableEvents = True
    End If
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
завтра проверю. тут еще один нюанс - если вручную исправить одно из последних значений в колонке С (забыл сказать, что эта история длится по всей колонке С), то формула уже не работает. Макрос?
 
Johnsonbl4, не понял. Перефразируйте.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
перефразирую.

Заполняю ячейки А1 и В1. В ячейке С1 появляется формула  =А1-В1 и результат, естественно. Результат мне не нравится, и я руками вбиваю туда другую цифру. После этого заполняю ячейки А2 и В2, но ячейка С2 остается пустой. Если бы я не менял вручную значение С1, то формула бы срабатывала. Макрос?
 
Johnsonbl4, изначально надо задачу чётко формулировать. Решение согласно примера работает на трёх ячейках.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target(1), Union(Range("A:A"), Range("B:B"))) Is Nothing Then
        Application.EnableEvents = False
        With Target(1)
            If Len(Range("A" & .Row)) > 0 And Len(Range("B" & .Row)) > 0 Then
                Range("C" & .Row).Formula = "=A" & .Row & "-B" & .Row
            Else
                Range("C" & .Row).Value = Empty
            End If
        End With
        Application.EnableEvents = True
    End If
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
ага, понял. спасибо
Страницы: 1
Читают тему
Наверх