Господа знатоки , прошу помощи Суть вопроса такова. Есть умная таблица, Данные в таблицу добавляю через форму.
Код
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 колонку ListRow.Range( 8) должен добавлятся пол человека (Мужчина - м., Женщина - ж) и делаться это должно на основании информации из бокса MyForm.Txt_O.Value
Другими словами : Программа берет MyForm.Txt_O.Value посредством формулы =ЕСЛИ(ПРАВСИМВ обрабатывает и результат через ListRow.Range(8) - добавляэт в таблицу
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( = Gender(MyForm.Txt_O.Value) ругается.
Подсказываю, в неумении описать то что вы хотите получить. Если хотите вставить значение полученное после предварительной обработки, то так и напишите, только вот такого
ну если вам ближе такая конструкция, то 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 выглядит коротко и удобно, но нужно понимать, что оба значения внутри должны быть вычислимы
Ігор Гончаренко, Игорь, до контрукции мы еще долго не доберемся, неведая что там в MyForm.Txt_O.Value и что там за правые символы которые должны указать на ЭМЖО :-) . По отчеству определять пол? Ровно до первого иностранца.
БМВ Если хотите вставить значение полученное после предварительной обработки, то так и напишите Даааа , именно это я и хочу получить .
Касательно
Код
MyForm.Txt_O.Value
- там Отчество человека (из которого , при помощи формулы определяется последний правый символ) Если посмотреть на приложенный код то можна увидеть ,что сначала заполняется
axill_3d, да, плохо. Вам нужна помощь в синтаксисе или в написании формулы, которая из отчества вычислит к какому полу принадлежит субьект? Если первое, то где формула, которую надо использовать? А если второе, то как оно связано с названием темы?
Function Gender(pol As Long) As Long
Gender = Application.Cells.Formula = "=IF(RIGHT(pol)=""ч"",""ч"",IF(RIGHT(pol)=""а"",""ж"",""???""))"
'
End Function
Ой спасибо , БМВІгор Гончаренко как же вы ребята мне помогли !!!!!!! То эсть вот так просто , и никаких функций добавлять не надо ? Буква "ч" это опечатка , должно быть "м" - Писал быстро.