Страницы: 1
RSS
Подстановка формулы по умолчанию в редактируемую ячейку
 
Коллеги, нужно реализовать следующий функционал

Есть ячейка, по умолчанию, в ней должна быть сумма соседних, но при этом, должна оставаться возможность ввести число руками.

Правильно ли я понимаю, что делать надо так
Вешать скрипт VBA на изменение этой ячейки - если она пустая, то подставляем формулу.

Или есть какие то более изящные решения?
Чем меня смущает способ выше, если ячейки не именованные, то скрипт начнет надо будет править каждый раз при добавлении строк (а такое возможно)

или сделать именованные ячейки и не парится?
Изменено: gribnick75 - 08.02.2024 13:03:10
 
Цитата
gribnick75 написал:
Чем меня смущает способ выше, если ячейки не именованные, то скрипт начнет надо будет править каждый раз при добавлении строк (а такое возможно)
Можно, как Вы выражаетесь 'вешать' макрос на нужный диапазон. Можно вообще на другое событие. Можно на кнопку и т.п. Масса вариантов. Вы лучше файл-пример покажите. Как есть-Как надо
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
gribnick75,
я бы сделал MsgBox с вопросом "Вы уверены, что хотите изменить формулу на значение?". И если пользователь нажмет "Да", то значение сохранится, а если "Нет", то вернется формула
Изменено: evgeniygeo - 08.02.2024 13:12:53
 
Цитата
evgeniygeo написал:
я бы сделал MsgBox с вопросом "Вы уверены, что хотите изменить формулу на значение?". И если пользователь нажмет "Да", то значение сохранится, а если "Нет", то вернется формула

Тут вопрос в том, что если человек изменит и введет значение, как потом вернуть формулу.
можно и кнопкой, но "чем меньше действий - тем лучше"
 
Вводите значение в соседнюю ячейку, а в формуле пропишите условие: Если соседняя ячейка пустая, тогда считать по формуле. иначе - бери из сосед. яч. значение
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Михаил Лебедев написал:
Вводите значение в соседнюю ячейку, а в формуле пропишите условие: Если соседняя ячейка пустая, тогда считать по формуле. иначе - бери из сосед. яч. значение

Можно и так, но может путать конечного пользователя.
Там и так форма для заполнения довольно большая
Хочется как раз визуально все упростить, чтобы у пользователя не кипела голова от "введи сюда или сюда, нажми кнопку"
 
А сама ЗАДАЧА то вообще в чем?. Не СПОСОБ, которым Вы пытаетесь ее решить. Страшный сон бухгалтерии - Пользователь может менять значение =СУММ()ы ячеек по своему усмотрению
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
gribnick75,
странно конечно, но в таком случае можно сделать два вида сброса: сбросить все (вставить формулы везде), сбросить активную ячейку

как вариант:
Код
Sub СброситьВсе()
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
a = 1
For n = 7 To lLastRow Step 6
Cells(n, 2).FormulaLocal = "=СУММ(B" & a + 1 & ":B" & n - 1 & ")"
a = n
Next
End Sub
Sub СброситьАктив()
If Cells(ActiveCell.Row, 1) <> "ИТОГ" Then
MsgBox "asdasd"
Exit Sub
Else
a = 1
For n = ActiveCell.Row - 1 To 1 Step -1
    If Cells(n, 1) = "ИТОГ" Then a = n
Next
Cells(ActiveCell.Row, 2).FormulaLocal = "=СУММ(B" & a + 1 & ":B" & ActiveCell.Row - 1 & ")"
End If
End Sub
Изменено: evgeniygeo - 12.02.2024 07:13:54
Страницы: 1
Наверх