Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
Excel

Как формулу превратить в статическое значение?

01.04.2023, 21:19. Показов 1917. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая ситуация есть ячейка в которую записана формула нужно заменить её на значение. Я снял подробное видео:
1ая часть
https://youtu.be/-RMY0zxymik
2ая часть
https://youtu.be/Nh0fFnydI9k
со своими экспериментами может дадите совет как реализовать идею. Я хочу написать макрофункцию которая будет это делать. В видео показан пример с датами но в целом это может быть что угодно.
Код из видео
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Function Rashot(n As Integer, l As Date) As Integer
'1
'Range("A3").Value = Date
'2
'Cells(1, 3).Value = Cells(1, 3).Value
'3
Dim formula As String
formula = l
 
Range("A3").Select
'SetActiveCell(A3, False)
Range("A3").Activate
ActiveCell.FormulaR1C1 = "=TODAY()"
'4
'Range("A3").FormulaLocal = "=СЕГОДНЯ()"
'5
'Range("A3").Value = Range("A3").Value
Rashot = n
End Function
Если по какой-то причине видео будет удалено я напишу новый комментарий с новой ссылкой.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2023, 21:19
Ответы с готовыми решениями:

Как превратить формулу в макрос
Здравствуйте, Уважаемые форумчане. Подскажите как превратить данную формулу в макрос: =ВПР(B7;G:H;2;0) Что-бы макрос работал выборкой...

Как превратить строку в формулу
Здравствуйте нужна помощь! Я новичок в программировании! У меня возникла такая проблема. В поле edit1 пользователь вводит формулу ...

Помагите превратить код в формулу
(X+7)/3*X+3*ArcTan(X)/2/X+1.0E+07-Sqr(4*Exp(B*Ln(X)))

30
1412 / 873 / 93
Регистрация: 08.02.2017
Сообщений: 3,724
Записей в блоге: 2
08.04.2023, 04:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nexi99 Посмотреть сообщение
Сам макрос создан в той же книге в проекте Module1 вот скрин
Проект это "VBAProject..". Модуль это "Module..". Функция должна быть в модуле. Макрос Worksheet_Calculate надо поместить в модуль листа ("Лист1(Лист1)")
0
1412 / 873 / 93
Регистрация: 08.02.2017
Сообщений: 3,724
Записей в блоге: 2
08.04.2023, 04:43
Более универсальный вариант поместить "событие" в модуле книги - будет работать на всех листах. В приложенном файле нужно убрать расширение ".zip"
Вложения
Тип файла: zip ФиксацияЗначений.xlsm.zip (15.4 Кб, 11 просмотров)
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
08.04.2023, 05:52  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
Более универсальный вариант поместить "событие" в модуле книги - будет работать на всех листах. В приложенном файле нужно убрать расширение ".zip"
старый вариант
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public changelist As New Collection
 
Private Sub Worksheet_Calculate()
    Dim cell As Range
    If changelist.Count Then
        On Error Resume Next
        Application.Calculation = xlCalculationManual
        For Each cell In changelist
            cell.Value = cell.Value
        Next
        Set changelist = Nothing
        Application.Calculation = xlCalculationAutomatic
    End If
End Sub
Function FixValue(cond&, retval)
      If cond Then changelist.Add Application.ThisCell
      FixValue = retval
End Function
выдаёт ошибку
#ЗНАЧ!
Запускается автоматически но формула на значение не меняется

Добавлено через 2 минуты
новый вариант сработал. Ещё поиграюсь со старым

Добавлено через 3 минуты
Старый не хочет робить. А для чего здесь переменная ByVal Sh As Object в аргументах функции
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Dim cell As Range
    If changelist.Count Then
        On Error Resume Next
        Application.Calculation = xlCalculationManual
        For Each cell In changelist
            cell.Value = cell.Value 'фиксация значений
        Next
        Set changelist = Nothing    'очищаем коллекцию после фиксации значений
        Application.Calculation = xlCalculationAutomatic
    End If
End Sub
?
0
1412 / 873 / 93
Регистрация: 08.02.2017
Сообщений: 3,724
Записей в блоге: 2
08.04.2023, 06:02
Цитата Сообщение от Nexi99 Посмотреть сообщение
А для чего здесь переменная ByVal Sh As Object
Это объект листа, в котором произошло событие
Гораздо интереснее если бы в это событие приходил диапазон текущего пересчета, но видимо потому, что это событие может быть очень объемное, микрософт лишил нас этой радости
0
349 / 190 / 108
Регистрация: 01.04.2020
Сообщений: 538
08.04.2023, 14:28
Nexi99,
Миниатюры
Как формулу превратить в статическое значение?  
0
349 / 190 / 108
Регистрация: 01.04.2020
Сообщений: 538
08.04.2023, 14:34
незаметил, здесь уже и вторая страница ответов ...
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
09.04.2023, 00:32  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
Это объект листа, в котором произошло событие
Так туда же ничего не передаётся да и внутри вашей функции нет ни одного обращения к этому объекту(переменной).
0
1412 / 873 / 93
Регистрация: 08.02.2017
Сообщений: 3,724
Записей в блоге: 2
09.04.2023, 04:45
Цитата Сообщение от Nexi99 Посмотреть сообщение
нет ни одного обращения к этому объекту(переменной).
Тут такой почин - главное, чтоб не мешало, а болтается так пусть болтается. Я так понимаю это все на т.н. колбеке построено.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
09.04.2023, 23:11  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
Тут такой почин - главное, чтоб не мешало, а болтается так пусть болтается. Я так понимаю это все на т.н. колбеке построено.
Visual Basic
1
2
3
4
Function FixValue(cond&, retval)
      If cond Then changelist.Add Application.ThisCell
      FixValue = retval
End Function
Почему не указан тип аргументов функции cond&, retval?
0
349 / 190 / 108
Регистрация: 01.04.2020
Сообщений: 538
10.04.2023, 00:06
Цитата Сообщение от Nexi99 Посмотреть сообщение
Почему не указан тип аргументов функции cond&, retval?
У переменной cond указан тип long.
В VBA можно тип long указать либо так:
Visual Basic
1
2
3
Function FixValue(cond As Long, retval)
'либо так:
Function FixValue(cond&, retval)
У переменной retval тип не указан явно.
Могли бы писать и так:
Visual Basic
1
Function FixValue(cond As Long, retval As Variant)
Но если тип переменной не указать явно, он по умолчанию будет variant.
0
1412 / 873 / 93
Регистрация: 08.02.2017
Сообщений: 3,724
Записей в блоге: 2
10.04.2023, 02:47
Цитата Сообщение от Nexi99 Посмотреть сообщение
Почему не указан тип аргументов функции cond&, retval?
В VB существует краткая нотоация(&, !, %, $..) не для всех типов конечно. Можно не указывать тип, тогда интерпретируется как variant. Если не указывать тип передачи аргумента ByVal/ByRef - по умолчанию интерпретируется как ByRef (для функций и процедур)
Можно принудительно передавать по значению ByVal при выполнении
Visual Basic
1
fnc123 (a), byVal b, c
В данном случае функция выполнится как процедура, a и b будут переданы по значению, c - byRef
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2023, 02:47

превратить формулу в код паскаля
помогите пожалуйста за ранее спасибо

Формулу надо превратить в ДНФ (Дизъюнктивная нормальная форма)
:-op(100,fx,~). :-op(110,xfy,&). :-op(120,xfy,v). :-op(130,xfy,=>). :-op(140,xfy,<=>). :-op(200,xfy,--->). ...

Используя статическое наследование, статическое замещение, виртуальное или динамическое замещение, написать программу-калькулятор
Помогите ребят, препод барыга. пришёл. о языке ни слова. Дал задание и ушёл( это первые две пары такие были(

Массив: вычислить значение интеграла, используя: Формулу трапеций и Формулу Симпсона
Даны вещественные числа a,b. Значения функции записать в массив. Вычислить значение интеграла, используя: 1) Формула трапеций ...

Как значение из Edit кинуть в формулу для вычисления интеграла.?
Парни у меня программа вычисления интеграла по формуле трапеций.И чтобы вычислить интеграл нужно его ввести в Edit и другие переменные ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru