Страницы: 1 2 След.
RSS
Как добавить формулу в таблицу
 
Господа знатоки , прошу помощи
Суть вопроса такова. Есть умная таблица, Данные в таблицу добавляю через форму.
Код
  Sub WorkSmart()
    Dim ShGeneral As Worksheet
    Dim ListObg As ListObject
    Dim ListRow As ListRow
    
    Set ShGeneral = ThisWorkbook.Worksheets("база")
    Set ListObg = ShGeneral.ListObjects("MyTable_tb")
 
    Set ListRow = ListObg.ListRows.Add
    ListRow.Range(1) = MyForm.Txt_likar.Value
    ListRow.Range(2) = MyForm.Txt_F.Value
    ListRow.Range(3) = MyForm.Txt_I.Value
    ListRow.Range(4) = MyForm.Txt_O.Value
    ListRow.Range(5) = MyForm.DT_rozhd.Value
    ListRow.Range(6) = MyForm.ComboBox_mkx.Value
    ListRow.Range(7) = MyForm.ChBox_zaxvor.Value
    ListRow.Range( =


Как сделать так чтобы  ListRow.Range(8) добавлял в таблицу результат из формулы =ЕСЛИ
Очень прошу помочь. Третий день голову ломаю.
Изменено: axill_3d - 18.07.2018 14:52:52
 
Цитата
axill_3d написал:
Как сделать так чтобы  ListRow.Range( добавлял в таблицу результат из формулы =ЕСЛИ
А более понятно нам рассказать что за ЕСЛИ?
По вопросам из тем форума, личку не читаю.
 
ListRow.Range(8 ) = ""Если", ты где? Ау! Отдай свое значение!"  :D
Изменено: RAN - 17.07.2018 19:24:28
 
ну вот зачем было создавать эту тему если уже была эта
По вопросам из тем форума, личку не читаю.
 
Друзья суть такова

Мне необходимо через форму , из текстбоксов вносить данные в таблицу .
  вот здесь как раз ети данные добавляются  
Код
  ListRow.Range(1) = MyForm.Txt_likar.Value
    ListRow.Range(2) = MyForm.Txt_F.Value
    ListRow.Range(3) = MyForm.Txt_I.Value
    ListRow.Range(4) = MyForm.Txt_O.Value
    ListRow.Range(5) = MyForm.DT_rozhd.Value
    ListRow.Range(6) = MyForm.ComboBox_mkx.Value
    ListRow.Range(7) = MyForm.ChBox_zaxvor.Value
    ListRow.Range( = 


но в последнюю 8 колонку ListRow.Range( 8) должен добавлятся пол человека (Мужчина - м., Женщина - ж) и делаться это должно  
на основании  информации из бокса  MyForm.Txt_O.Value

Другими словами : Программа берет
MyForm.Txt_O.Value  посредством формулы =ЕСЛИ(ПРАВСИМВ обрабатывает
и результат через   ListRow.Range(8) - добавляэт в таблицу

Надеюсь обьяснил.
Изменено: axill_3d - 18.07.2018 14:53:29
 
ну если вам ближе такая конструкция, то ListRow.Range(8) = IIF ……
Ну или IF …then ... else …. end If
Изменено: БМВ - 17.07.2018 21:34:09
По вопросам из тем форума, личку не читаю.
 
В саму конструкцию формулы вместо активной ячейки что подставить ?
 
axill_3d,  код следует оформлять соответствующим тегом. Ищите такую кнопку <...> и исправьте своё сообщение.
 
Код
Sub WorkSmart()     Dim ShGeneral As Worksheet     Dim ListObg As ListObject     Dim ListRow As ListRow          Set ShGeneral = ThisWorkbook.Worksheets("áàçà")     Set ListObg = ShGeneral.ListObjects("MyTable_tb")       Set ListRow = ListObg.ListRows.Add     ListRow.Range(1) = MyForm.Txt_likar.Value     ListRow.Range(2) = MyForm.Txt_F.Value     ListRow.Range(3) = MyForm.Txt_I.Value     ListRow.Range(4) = MyForm.Txt_O.Value     ListRow.Range(5) = MyForm.DT_rozhd.Value     ListRow.Range(6) = MyForm.ComboBox_mkx.Value     ListRow.Range(7) = MyForm.ChBox_zaxvor.Value     ListRow.Range( = Gender(MyForm.Txt_O.Value)     ListRow.Range(9) = MyForm.DT_data_priyom.Value      End Sub  Function Gender(pol As Long) As Long      Gender = Application.Cells.Formula = "=IF(RIGHT(pol)=""÷"",""÷"",IF(RIGHT(pol)=""à"",""æ"",""???""))" '      End Function

Попробовал прикрутить через функцию , однако     ListRow.Range(8) = Gender(MyForm.Txt_O.Value) ругается.

Подскажите что не так.

Изменено: axill_3d - 18.07.2018 12:08:09
 
Цитата
axill_3d написал:
Подскажите что не так.
Подсказываю, в неумении описать то что вы хотите получить. Если хотите вставить значение полученное после предварительной обработки, то так и напишите, только вот такого
Цитата
axill_3d написал:
=ЕСЛИ(ПРАВСИМВ обрабатывает
не хватает.
По вопросам из тем форума, личку не читаю.
 
Цитата
ну если вам ближе такая конструкция, то ListRow.Range(8)= IIF …… Ну или IF …then ... else …. end If
дело не в том, что больше нравиться, а в том, что
конструкция:
Код
if rg is Nothing then
  A = 0
else
  A = rg.cells(1)
end if
отработает коррректно при любом условии потому что при rg is Nothing она просто обойдет else..., а
A = Iif(rg is Nothing, 0, rg.cells(1))
упадет по ошибке при rg is Nothing потому что Iif сначала вычисляет оба значения, потом проверяет условие и возвращает значение соотв. условию и попытка вычислить rg.cells(1) при rg is Nothing - приведет к краху этой конструкции
т.е. Iif выглядит коротко и удобно, но нужно понимать, что оба значения внутри должны быть вычислимы
Изменено: Ігор Гончаренко - 18.07.2018 13:14:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,  Игорь,  до контрукции мы еще долго не доберемся, неведая что там в  MyForm.Txt_O.Value  и что там за правые символы которые  должны указать на ЭМЖО :-) . По отчеству определять пол? Ровно до первого иностранца.
Изменено: БМВ - 18.07.2018 13:35:37
По вопросам из тем форума, личку не читаю.
 
Цитата
axill_3d написал:
Есть умная таблица
Здравствуйте, коллеги! Если таблица умная, то формулу лучше изначально добавить в нее, а не вставлять макросом.
Владимир
 
Цитата
sokol92 написал:
изначально добавить в нее,
Владимир, не разрушайте интригу :-)
И да и нет. вопрос нужно ли расчетным иметь это поле или пусть будут константы.  
Изменено: БМВ - 18.07.2018 13:40:30
По вопросам из тем форума, личку не читаю.
 
БМВ Если хотите вставить значение полученное после предварительной обработки, то так и напишите
Даааа , именно это я и хочу получить .

Касательно
Код
 MyForm.Txt_O.Value 
- там Отчество человека (из которого , при помощи формулы определяется последний правый символ)  
Если посмотреть на приложенный код то можна увидеть ,что сначала заполняется  
Код
  ListRow.Range(4) = MyForm.Txt_O.Value
а уже потом на основании него
Код
  ListRow.Range(8) =
должно добавить результат формулы ..

неужели я так плохо объясняю ?
Изменено: axill_3d - 19.07.2018 08:36:03
 
axill_3d,  да, плохо. Вам нужна помощь в синтаксисе или в написании формулы, которая из отчества вычислит к какому полу принадлежит субьект? Если первое, то где формула, которую надо использовать? А если второе, то как оно связано с названием темы?
Изменено: БМВ - 18.07.2018 15:27:00
По вопросам из тем форума, личку не читаю.
 
обьясняете Вы отлично, понять только пока никто не смог
правый символ из MyForm.Txt_O.Value определите с помощью:
Код
RightChar = Right(MyForm.Txt_O.Value, 1)
(и при чем тут формулы вообще)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 

Вот же она

Код
Function Gender(pol As Long) As Long

    Gender = Application.Cells.Formula = "=IF(RIGHT(pol)=""ч"",""ч"",IF(RIGHT(pol)=""а"",""ж"",""???""))"
'
    
End Function
 
Код
ListRow.Range(8) = IIF(Right(MyForm.Txt_O.Value, 1)="ч","ч",IIF(Right(MyForm.Txt_O.Value, 1)="а","ж","???"))


Только не подскажете, что за пол Ч  - Человек? То есть женщина не человек?
По вопросам из тем форума, личку не читаю.
 
перепишите так:
Код
Function Gender$(pol$)
    Gender =  Evaluate( "=IF(RIGHT(pol)="ч","ч",IF(RIGHT(pol)="а","ж","???"))")
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
БМВ написал:
что за пол Ч
українською:
Ч - чоловіча стать
Ж - жіноча стать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ой спасибо , БМВ Ігор Гончаренко как же вы ребята мне помогли !!!!!!! То эсть вот так просто , и никаких функций добавлять не надо ?
Буква   "ч" это опечатка , должно быть "м" - Писал быстро. :)
Изменено: axill_3d - 19.07.2018 08:37:07
 
Ігор Гончаренко

Если использовать Вашу функцию
Код
Function Gender$(pol$)    Gender =  Evaluate( "=IF(RIGHT(pol)="ч","ч",IF(RIGHT(pol)="а","ж","???"))")
End Function

Тогда в значение
Код
 ListRow.Range(8)
= добавлять
Код
 Gender$ 
?
Изменено: axill_3d - 18.07.2018 16:15:09
 
нет. тогда:
Код
ListRow.Range( 8 ) = Gender(MyForm.Txt_O.Value)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко
Только вот функция
Код
Function Gender$(pol$)
Gender =  Evaluate( "=IF(RIGHT(pol$)="ч","м",IF(RIGHT(pol$)="а","ж","???"))")
End Function
выдаёт ошибку.


Какой из двух способов более тяжеловесный для прощёта . Иными словами какой больше подойдёт при оптимизации кода.  
 
Код
Function Gender$(pol$)
  Gender = Evaluate("=IF(RIGHT(""" & pol & """)=""ч"",""м"",IF(RIGHT(""" & pol & """)=""а"",""ж"",""???""))")
End Function
Изменено: Ігор Гончаренко - 18.07.2018 16:39:11
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Дорогие друзья огромное всем спасибо . Всё получилось.
 
Всем привет . У меня появился новый вопрос.
Суть такова .

Необходимо посчитать возраст пациента
Код
ListRow.Range(5) = MyForm.DT_rozhd.Value
ListRow.Range(9) = MyForm.DT_data_priyom.Value 
Первая строка - дата рождения
Вторая  - текущая датапри помощи такой конструкции
Код
Function Vozrast$(dtRogd$, dtTekush$)
  Vozrast = Evaluate("=DATEDIF(""" & dtRogd & """,""" & dtTekush & """,""y"")")
End Function
пытаюсь вывести в таблицу
Код
ListRow.Range(10) = Vozrast(MyForm.DT_rozhd.Value, MyForm.DT_data_priyom.Value)
точное количество лет


Однако вылетает ошибка


Подскажите , где чего не так делаю.
 
разница между одним текстом  и вторым не измеряется годами.
По вопросам из тем форума, личку не читаю.
 
axill_3d, а какое отношение этот вопрос имеет к заявленной теме?
Страницы: 1 2 След.
Наверх