Serge_007, грешно смеяться над больными людьми Ну плохо я соображаю И 17 пост (хоть и предоставляется готовое решение для меня очень сложен в понимании как его применить в своем коде)
Даже решение предложенное gling, (Сообщение № 10) мне кажется легким и понятливым но оно завязано на кнопку и если я начинаю его применять к ВЫВОДУ (в строке B39:P39) терплю неудачу даже в его по сути готовом решении.
Легче наверное на отдельном листе прописать данную формулу а на листе "Протокол" макросом сослаться на ту ячейку того листа :'( ИБО для меня не пришло все таки понимание
Serge_007, грешно смеяться над больными людьми Ну плохо я соображаю И 17 пост (хоть и предоставляется готовое решение для меня очень сложен в понимании как его применить в своем коде)
Даже решение предложенное gling, (Сообщение № 10) мне кажется легким и понятливым но оно завязано на кнопку и если я начинаю его применять к ВЫВОДУ (в строке B39:P39) терплю неудачу даже в его по сути готовом решении.
Легче наверное на отдельном листе прописать данную формулу а на листе "Протокол" макросом сослаться на ту ячейку того листа :'( ИБО для меня не пришло все таки пониманиеlebensvoll
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim rng As Range: Set rng = [L31:L36] 'диапазон таблицы If Not Intersect(rng, Target) Is Nothing Then macro_210129_102523 'ссылаюсь на макрос в этой книге Application.EnableEvents = True End Sub
[/vba]
и ничего Да блин что не так то я все делаю (((( Если запустить выполнение макроса то выполняет (но он полностью с формулой его пишет в ячейке В39)
Gustav, в модуль листа пишу:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim rng As Range: Set rng = [L31:L36] 'диапазон таблицы If Not Intersect(rng, Target) Is Nothing Then macro_210129_102523 'ссылаюсь на макрос в этой книге Application.EnableEvents = True End Sub
[/vba]
и ничего Да блин что не так то я все делаю (((( Если запустить выполнение макроса то выполняет (но он полностью с формулой его пишет в ячейке В39)lebensvoll
выполняет (но он полностью с формулой его пишет в ячейке В39)
lebensvoll, Вам из моего макроса надо взять строки, начинающиеся с подстрок "strFormula = strFormula & ". В них основная суть процедуры - представление формулы из ячейки в виде нескольких строк кода, которые потом можно поместить куда угодно - в нужное место рабочей программы.
Все остальные строки до и после них, включая генерируемое случайное имя процедуры - это не более, чем временная обвязка, без которой не протестировать алгоритм (ну, просто такой попутный сервис - я бы мог их и не генерировать). Да, эта тестовая законченная процедура читает формулу из одной ячейки и в нёё же возвращает - просто в рамках теста. В Вашей воле прочитать формулу из одной ячейки, а записать совершенно в другую - просто исправьте адрес ячейки и всё (если надо).
С учетом вышесказанного типичный блок With / End With в вашей процедуре из сообщения #21 может выглядеть вот так: [vba]
Код
With Range("P39") strFormula = "" strFormula = strFormula & "=ЕСЛИ(R18=""Бетон"";ЕСЛИ(ЗНАЧЕН(O26)<27;""ЗАКЛЮЧЕНИЕ: В возрас" .......... strFormula = strFormula & "00/ВПР(R19;Класс!D5:F18;2;ЛОЖЬ);)&"" %."")))"
.FormulaLocal = strFormula .Value = .Value End With
[/vba]На всякий случай (если не понятно): многоточие .......... в представленном фрагменте означает все другие строки с "strFormula = strFormula & " между явно приведенными первой и последней из них.
выполняет (но он полностью с формулой его пишет в ячейке В39)
lebensvoll, Вам из моего макроса надо взять строки, начинающиеся с подстрок "strFormula = strFormula & ". В них основная суть процедуры - представление формулы из ячейки в виде нескольких строк кода, которые потом можно поместить куда угодно - в нужное место рабочей программы.
Все остальные строки до и после них, включая генерируемое случайное имя процедуры - это не более, чем временная обвязка, без которой не протестировать алгоритм (ну, просто такой попутный сервис - я бы мог их и не генерировать). Да, эта тестовая законченная процедура читает формулу из одной ячейки и в нёё же возвращает - просто в рамках теста. В Вашей воле прочитать формулу из одной ячейки, а записать совершенно в другую - просто исправьте адрес ячейки и всё (если надо).
С учетом вышесказанного типичный блок With / End With в вашей процедуре из сообщения #21 может выглядеть вот так: [vba]
Код
With Range("P39") strFormula = "" strFormula = strFormula & "=ЕСЛИ(R18=""Бетон"";ЕСЛИ(ЗНАЧЕН(O26)<27;""ЗАКЛЮЧЕНИЕ: В возрас" .......... strFormula = strFormula & "00/ВПР(R19;Класс!D5:F18;2;ЛОЖЬ);)&"" %."")))"
.FormulaLocal = strFormula .Value = .Value End With
[/vba]На всякий случай (если не понятно): многоточие .......... в представленном фрагменте означает все другие строки с "strFormula = strFormula & " между явно приведенными первой и последней из них.Gustav
Gustav, СПАСИБО Получилось!!! Спасибо Вам огромнейшее и "за готовое решение на будущее в разбивании длинных формул" и за подсказки, помощь, и сам макрос!!!
Gustav, СПАСИБО Получилось!!! Спасибо Вам огромнейшее и "за готовое решение на будущее в разбивании длинных формул" и за подсказки, помощь, и сам макрос!!!lebensvoll