Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Внесение результата расчета формулы методом ListRows.Add - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Внесение результата расчета формулы методом ListRows.Add (Макросы/Sub)
Внесение результата расчета формулы методом ListRows.Add
AVI Дата: Понедельник, 20.08.2018, 04:51 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
При заполнении таблицы в третий столбец вносится формула. Подскажите, пожалуйста, как сделать так, что бы носился результат расчета?

[vba]
Код
Sub wwww()
    Set ShReport = ThisWorkbook.Worksheets("Лист1")
    Set ReportListObj = ShReport.ListObjects("Таблица1")
    Set ReportListRow = ReportListObj.ListRows.Add
    
       ReportListRow.Range(1) = UserForm1.TextBox1.Value
       ReportListRow.Range(2) = UserForm1.TextBox2.Value
       ReportListRow.Range(3) = "=[А]+[Б]"
End Sub
[/vba]
К сообщению приложен файл: 0664142.xlsm (19.0 Kb)
 
Ответить
СообщениеДобрый день!
При заполнении таблицы в третий столбец вносится формула. Подскажите, пожалуйста, как сделать так, что бы носился результат расчета?

[vba]
Код
Sub wwww()
    Set ShReport = ThisWorkbook.Worksheets("Лист1")
    Set ReportListObj = ShReport.ListObjects("Таблица1")
    Set ReportListRow = ReportListObj.ListRows.Add
    
       ReportListRow.Range(1) = UserForm1.TextBox1.Value
       ReportListRow.Range(2) = UserForm1.TextBox2.Value
       ReportListRow.Range(3) = "=[А]+[Б]"
End Sub
[/vba]

Автор - AVI
Дата добавления - 20.08.2018 в 04:51
Pelena Дата: Понедельник, 20.08.2018, 06:55 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
[vba]
Код
ReportListRow.Range(3) = ReportListRow.Range(1) + ReportListRow.Range(2)
[/vba]
или
[vba]
Код
ReportListRow.Range(3) = UserForm1.TextBox1.Value + UserForm1.TextBox2.Value
[/vba]
При повторяющихся обращениях к одному и тому же объекту можно использовать With
[vba]
Код
    With ReportListRow
        .Range(1) = UserForm1.TextBox1.Value
        .Range(2) = UserForm1.TextBox2.Value
        .Range(3) = .Range(1) + .Range(2)
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[vba]
Код
ReportListRow.Range(3) = ReportListRow.Range(1) + ReportListRow.Range(2)
[/vba]
или
[vba]
Код
ReportListRow.Range(3) = UserForm1.TextBox1.Value + UserForm1.TextBox2.Value
[/vba]
При повторяющихся обращениях к одному и тому же объекту можно использовать With
[vba]
Код
    With ReportListRow
        .Range(1) = UserForm1.TextBox1.Value
        .Range(2) = UserForm1.TextBox2.Value
        .Range(3) = .Range(1) + .Range(2)
    End With
[/vba]

Автор - Pelena
Дата добавления - 20.08.2018 в 06:55
AVI Дата: Понедельник, 20.08.2018, 07:41 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Pelena, Спасибо, но, пример условный. Мне нужно узнать именно как вставить результат расчета.
Просто у меня там такая [vba]
Код
"=IF(R[-3]C="""",0,IF(ISERROR(INDEX(R9C4:R[-1]C[-8],MATCH(RC[-8]&RC[-6],R9C4:R[-1]C[-8]&R9C6:R[-1]C[-6],),1)),0,LOOKUP(,-1/(RC[-8]=R9C4:R[-1]C[-8])/(R9C6:R[-1]C[-6]=RC[-6]),R9C15:R[-1]C[3])))"
[/vba]. Я пока что понятия не имею как ее изобразить макросами (планирую изучать, но пока мне нужно что бы они просто работали), поэтому пока тупо вставляю формулы кодом.


Сообщение отредактировал AVI - Понедельник, 20.08.2018, 07:44
 
Ответить
СообщениеPelena, Спасибо, но, пример условный. Мне нужно узнать именно как вставить результат расчета.
Просто у меня там такая [vba]
Код
"=IF(R[-3]C="""",0,IF(ISERROR(INDEX(R9C4:R[-1]C[-8],MATCH(RC[-8]&RC[-6],R9C4:R[-1]C[-8]&R9C6:R[-1]C[-6],),1)),0,LOOKUP(,-1/(RC[-8]=R9C4:R[-1]C[-8])/(R9C6:R[-1]C[-6]=RC[-6]),R9C15:R[-1]C[3])))"
[/vba]. Я пока что понятия не имею как ее изобразить макросами (планирую изучать, но пока мне нужно что бы они просто работали), поэтому пока тупо вставляю формулы кодом.

Автор - AVI
Дата добавления - 20.08.2018 в 07:41
and_evg Дата: Понедельник, 20.08.2018, 08:25 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
AVI, посмотрите тут Evalute
 
Ответить
СообщениеAVI, посмотрите тут Evalute

Автор - and_evg
Дата добавления - 20.08.2018 в 08:25
AVI Дата: Понедельник, 20.08.2018, 09:01 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
and_evg, в этом случае тоже в ячейку будет попадать формула. Некоторые формулы и массивные и на большом объеме будут тормозить работу файла.
 
Ответить
Сообщениеand_evg, в этом случае тоже в ячейку будет попадать формула. Некоторые формулы и массивные и на большом объеме будут тормозить работу файла.

Автор - AVI
Дата добавления - 20.08.2018 в 09:01
and_evg Дата: Понедельник, 20.08.2018, 09:08 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
в этом случае тоже в ячейку будет попадать формула

Нет
[vba]
Код
переменная=EVALUATE("=IF(R[-3]C="""",0,IF(ISERROR(INDEX(R9C4:R[-1]C[-8],MATCH(RC[-8]&RC[-6],R9C4:R[-1]C[-8]&R9C6:R[-1]C[-6],),1)),0,LOOKUP(,-1/(RC[-8]=R9C4:R[-1]C[-8])/(R9C6:R[-1]C[-6]=RC[-6]),R9C15:R[-1]C[3])))")
[/vba]
в данном случае в "переменная" будет хранится результат вычисления вашей формулы
 
Ответить
Сообщение
в этом случае тоже в ячейку будет попадать формула

Нет
[vba]
Код
переменная=EVALUATE("=IF(R[-3]C="""",0,IF(ISERROR(INDEX(R9C4:R[-1]C[-8],MATCH(RC[-8]&RC[-6],R9C4:R[-1]C[-8]&R9C6:R[-1]C[-6],),1)),0,LOOKUP(,-1/(RC[-8]=R9C4:R[-1]C[-8])/(R9C6:R[-1]C[-6]=RC[-6]),R9C15:R[-1]C[3])))")
[/vba]
в данном случае в "переменная" будет хранится результат вычисления вашей формулы

Автор - and_evg
Дата добавления - 20.08.2018 в 09:08
_Boroda_ Дата: Понедельник, 20.08.2018, 09:14 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16673
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Очень странная формула. Лучше приложите файл, в котором она будет в ячейке, тогда, возможно, мы что-нибудь придумаем
в этом случае тоже в ячейку будет попадать формула
Нет, тогда будет попадать значение. Просто Андрей дал Вам не ту ссылку. Посмотрите другую https://docs.microsoft.com/en-us....valuate


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеОчень странная формула. Лучше приложите файл, в котором она будет в ячейке, тогда, возможно, мы что-нибудь придумаем
в этом случае тоже в ячейку будет попадать формула
Нет, тогда будет попадать значение. Просто Андрей дал Вам не ту ссылку. Посмотрите другую https://docs.microsoft.com/en-us....valuate

Автор - _Boroda_
Дата добавления - 20.08.2018 в 09:14
AVI Дата: Понедельник, 20.08.2018, 09:18 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
and_evg, Во...

Странно, касательно примера. Код работает с [vba]
Код
ReportListRow.Range(3) = Evaluate([А] + [Б])
[/vba] но после расчета (то есть расчет успешно проходит) вылезает ошибка Type Mismatch на указанную строку
Я, так понимаю, что он рукается на формат данных в формуле?
К сообщению приложен файл: 6749466.xlsm (19.2 Kb)
 
Ответить
Сообщениеand_evg, Во...

Странно, касательно примера. Код работает с [vba]
Код
ReportListRow.Range(3) = Evaluate([А] + [Б])
[/vba] но после расчета (то есть расчет успешно проходит) вылезает ошибка Type Mismatch на указанную строку
Я, так понимаю, что он рукается на формат данных в формуле?

Автор - AVI
Дата добавления - 20.08.2018 в 09:18
AVI Дата: Понедельник, 20.08.2018, 09:31 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Формула в столбце L

Ее смысл в том, что пользователь вносит операции по мере необходимости, а формула определяет остатки тех или иных медикаментов на складе. То есть ищет последнее упоминание о данном медикаменте в стоЛбце "наименование"с дополнительными условиями и вовращает цифру из столбца 13.

Так как я чуть мненьше, чем совсем не разбираюсь в функциях в макросах, то я тупо формулы вставляю через код. Даже если Вы сейчас предложите какую-то альтернативу в данном конкретном случае, то у меня все равно куча где по такой схеме работает форма и я сам пока что все равно не разберуюсь. Поэтому и прошу помочь с тем, что бы в ячейку вливать просто результат расчета формулы.
К сообщению приложен файл: ___-.xlsm (76.7 Kb)
 
Ответить
Сообщение_Boroda_, Формула в столбце L

Ее смысл в том, что пользователь вносит операции по мере необходимости, а формула определяет остатки тех или иных медикаментов на складе. То есть ищет последнее упоминание о данном медикаменте в стоЛбце "наименование"с дополнительными условиями и вовращает цифру из столбца 13.

Так как я чуть мненьше, чем совсем не разбираюсь в функциях в макросах, то я тупо формулы вставляю через код. Даже если Вы сейчас предложите какую-то альтернативу в данном конкретном случае, то у меня все равно куча где по такой схеме работает форма и я сам пока что все равно не разберуюсь. Поэтому и прошу помочь с тем, что бы в ячейку вливать просто результат расчета формулы.

Автор - AVI
Дата добавления - 20.08.2018 в 09:31
_Boroda_ Дата: Понедельник, 20.08.2018, 09:35 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16673
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тогда самый простой вариант - вставляете формулу, а потом в это же место вставляете значением результат расчета этой формулы
[vba]
Код
Sub wwww()
    Set ShReport = ThisWorkbook.Worksheets("Лист1")
    Set ReportListObj = ShReport.ListObjects("Таблица1")
    Set ReportListRow = ReportListObj.ListRows.Add
    With ReportListRow
       .Range(1) = UserForm1.TextBox1.Value
       .Range(2) = UserForm1.TextBox2.Value
       .Range(3).Formula = "=[А]+[Б]"
       .Range(3) = .Range(3).Value
    End With
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда самый простой вариант - вставляете формулу, а потом в это же место вставляете значением результат расчета этой формулы
[vba]
Код
Sub wwww()
    Set ShReport = ThisWorkbook.Worksheets("Лист1")
    Set ReportListObj = ShReport.ListObjects("Таблица1")
    Set ReportListRow = ReportListObj.ListRows.Add
    With ReportListRow
       .Range(1) = UserForm1.TextBox1.Value
       .Range(2) = UserForm1.TextBox2.Value
       .Range(3).Formula = "=[А]+[Б]"
       .Range(3) = .Range(3).Value
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 20.08.2018 в 09:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Внесение результата расчета формулы методом ListRows.Add (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!