Добрый день много уважаемые форумчане. прошу вас вновь о помощи !!! На UserForm имеются combobox(ы) хотел применить к одному combobox(у) одну формулу из прошлых моих тем, вот эту:
попробовал ее записать через макрорекордер, получилось вот так вот :
[vba]
Код
Sub Макрос2() ActiveCell.FormulaR1C1 = _ "=OFFSET(шифры!C2,MATCH('Кузнецов реестр'!R[-2]C[-8],шифры!C2,0)-1,1,COUNTIF(шифры!C2,'Кузнецов реестр'!R[-2]C[-8]))" Range("Q20").Select End Sub
[/vba]
Но прекрасно понимаю что данный макрос сработает лишь для ячейки (при использовании макроса) . А как мне данный код применить к combobox(у) на UserForm Если на UserForm в combobox(е) "8" указали (класс бетона В7,5) то в combobox(е) "11" сработает эта формула которая позволит выбрать из списка нужный продукт??? [img][/img]
Добрый день много уважаемые форумчане. прошу вас вновь о помощи !!! На UserForm имеются combobox(ы) хотел применить к одному combobox(у) одну формулу из прошлых моих тем, вот эту:
попробовал ее записать через макрорекордер, получилось вот так вот :
[vba]
Код
Sub Макрос2() ActiveCell.FormulaR1C1 = _ "=OFFSET(шифры!C2,MATCH('Кузнецов реестр'!R[-2]C[-8],шифры!C2,0)-1,1,COUNTIF(шифры!C2,'Кузнецов реестр'!R[-2]C[-8]))" Range("Q20").Select End Sub
[/vba]
Но прекрасно понимаю что данный макрос сработает лишь для ячейки (при использовании макроса) . А как мне данный код применить к combobox(у) на UserForm Если на UserForm в combobox(е) "8" указали (класс бетона В7,5) то в combobox(е) "11" сработает эта формула которая позволит выбрать из списка нужный продукт??? [img][/img]lebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Вторник, 04.10.2016, 14:11
В VBA есть аналог функций Excel'я - это объект "WorksheetFunction". Этот объект можно использовать для расчета по формулам и не использовать ячейки листа. Но в этом объекте нет функции СМЕЩ (OFFSET), поэтому если Вы хотите использовать именно формульный расчет, то формулу нужно заменить. Могу предложить такой вариант:
Или можно отказаться от формул и сделать расчет макросом. При этом часть кода макроса можно сделать с использованием объекта "WorksheetFunction". Например, можно искать, подсчитывать с помощью функций Excel'я.
В VBA есть аналог функций Excel'я - это объект "WorksheetFunction". Этот объект можно использовать для расчета по формулам и не использовать ячейки листа. Но в этом объекте нет функции СМЕЩ (OFFSET), поэтому если Вы хотите использовать именно формульный расчет, то формулу нужно заменить. Могу предложить такой вариант:
Или можно отказаться от формул и сделать расчет макросом. При этом часть кода макроса можно сделать с использованием объекта "WorksheetFunction". Например, можно искать, подсчитывать с помощью функций Excel'я.Karataev
Karataev, так в том то и дело что формульный расчет тут ну ни как не применим (((( потому как нужно именно макросом.
Цитата
Если на UserForm в combobox(е) "8" указали (класс бетона В7,5) то в combobox(е) "11"
нужно чтоб сработал именно код для отображения списка в combobox(е) "11" должно быть как то так (см.Файл в ячейках F а также J) только лишь на самой форме в приложенном скрине (сообщение №1) [p.s.]Karataev, сейчас попробую предложенный вами вариант решения, если получится[/p.s.]
Karataev, так в том то и дело что формульный расчет тут ну ни как не применим (((( потому как нужно именно макросом.
Цитата
Если на UserForm в combobox(е) "8" указали (класс бетона В7,5) то в combobox(е) "11"
нужно чтоб сработал именно код для отображения списка в combobox(е) "11" должно быть как то так (см.Файл в ячейках F а также J) только лишь на самой форме в приложенном скрине (сообщение №1) [p.s.]Karataev, сейчас попробую предложенный вами вариант решения, если получится[/p.s.]lebensvoll
Но объект "WorksheetFunction" аналог формульного расчета. Если заменить функцию СМЕЩ на ИНДЕКС, то можно попробовать сделать только с помощью функций Excel, используя объект "WorksheetFunction".
Но объект "WorksheetFunction" аналог формульного расчета. Если заменить функцию СМЕЩ на ИНДЕКС, то можно попробовать сделать только с помощью функций Excel, используя объект "WorksheetFunction".Karataev
_Boroda_, Добрый вечер... Так я файл для примера кинул и там нет Комбобоксов... Я хотел чтоб по аналогии данного примера применить его для другого файла чтоб на ФОРМЕ было подобный способ Мне даже стыдно показывать пример что я сделал ((((( только не упадите там со стульев [vba]
Код
Private Sub ComboBox11_Change() Dim myFormula As Integer myFormula = WorksheetFunction.Index(Worksheets("шифры").Range("C2"), Match(ComboBox8, Worksheets("шифры").Range("C2"), 0) * 2): INDEX _<br / <img rel="usm" src="/sml2/angry.gif" border="0" align="absmiddle" alt=">(" /> Worksheets("шифры").Range("C2"),MATCH(ComboBox8,Worksheets("шифры").Range("C2"),0)+COUNTIF(Worksheets("шифры").Range("C2"),ComboBox8)-1,2) End Sub
[/vba]
То что куда я это хотел применить вот файл (((( Но там при копировании почему то перестала открываться сама форма и код ругается (((((
_Boroda_, Добрый вечер... Так я файл для примера кинул и там нет Комбобоксов... Я хотел чтоб по аналогии данного примера применить его для другого файла чтоб на ФОРМЕ было подобный способ Мне даже стыдно показывать пример что я сделал ((((( только не упадите там со стульев [vba]
Код
Private Sub ComboBox11_Change() Dim myFormula As Integer myFormula = WorksheetFunction.Index(Worksheets("шифры").Range("C2"), Match(ComboBox8, Worksheets("шифры").Range("C2"), 0) * 2): INDEX _<br / <img rel="usm" src="/sml2/angry.gif" border="0" align="absmiddle" alt=">(" /> Worksheets("шифры").Range("C2"),MATCH(ComboBox8,Worksheets("шифры").Range("C2"),0)+COUNTIF(Worksheets("шифры").Range("C2"),ComboBox8)-1,2) End Sub
[/vba]
То что куда я это хотел применить вот файл (((( Но там при копировании почему то перестала открываться сама форма и код ругается (((((lebensvoll
lebensvoll, нужно сразу в Combobox записывать, т.к. формула с индексом вернет массив данных, а не одно значение. Ваша формула со СМЕЩ то же возвращала несколько значений, а не одно. Индекс по такому же принципу. Массив в Combobox записывается так: Combobox.List = массив И в формуле из поста 7 все функции нужно указывать с использованием объекта "WorksheetFunction". А у Вас где-то с этим объектом, а где-то просто, например: [vba]
lebensvoll, нужно сразу в Combobox записывать, т.к. формула с индексом вернет массив данных, а не одно значение. Ваша формула со СМЕЩ то же возвращала несколько значений, а не одно. Индекс по такому же принципу. Массив в Combobox записывается так: Combobox.List = массив И в формуле из поста 7 все функции нужно указывать с использованием объекта "WorksheetFunction". А у Вас где-то с этим объектом, а где-то просто, например: [vba]
Доброе утро всем!!! Многоуважаемые форумчане прошу меня простить но тему закрываю... (((((((( Спасибо вам огромнейшее за отклики... Найду ответ на свое решение обязательно выложу пример с решением
Доброе утро всем!!! Многоуважаемые форумчане прошу меня простить но тему закрываю... (((((((( Спасибо вам огромнейшее за отклики... Найду ответ на свое решение обязательно выложу пример с решениемlebensvoll