Страницы: 1
RSS
Подстановка данных в userform, Как увидеть в userform ранее введенные данные
 
Уважаемые профи, благодаря Вашей помощи решилась часть проблем, но вылезли новые вопросы  ;) Ситуация: на userform находятся несколько (в примере 2) блоков, состоящих из textbox в которые попадают высчитанные формулой (спасибо за помощь Казанскому) данные после выбора параметра в combobox. Данная форма позволяла внести данные на бланк, но имелся небольшой минус - каждую новую смету приходилось сохранять в отдельном файле, что не есть гуд. А задумалось мне заносить строки в одну большую таблицу, а затем выбирать ИНДЕКСом из нее данные (это я уже применял в своих файлах). Вопросов вылезло (пока) два:
Для формирования индекса для последующей выборки я планирую добавить к каждому блоку еще один textbox значение котрого будет равно значению combobox с заголовком "Объект" и который попав в нужную ячейку и сформирует скажем так некий индекс по которому можно будет выбрать данные. А вот как сделать так, чтобы выбрав в combobox "Объект" уже всавленный индекс увидеть в моей форме и уже введенные данные с возможностью исправвить и/или добавить данные?
Сейчас данные из textbox попадают в жестко закрепленные за каждым textbox ячейки, а мне потребуется вносить данные в первую строку после заполненных (это я умею, благодаря форуму), строк на каждый объект будет не более 10, так вот как вносить эти самые строки скажем в блоки по 10 строк, может  оставляя пустые строки (если они окажутся незаполненными). Тогда, если решается первый вопрос, открыв этот самый "блок" в userform можно будет добавить строки, не боясь заменить строи возможно введенные ниже (только тогда надо решить вопрос того, что уже введенные и не измененные строки не должны  вновь вноситься в таблицу). Уф, проблемы броде бы понимаю и вижу, а вот решения ...)
P.S. В прилагаемом файле userform активируется на листе "Расход материалов" пр активации ячеек в диапазоне B4:B50, действия по CommandButton1 пока настроены только на первый блок combobox.
Заранее спасибо всем откликнувшимся. Простите за большой объем текста, но хотел поподробнее описать проблему.
 
xxlleeaa, посмотрел Ваш файл, но не понял что надо  :(  Если Вы все делаете макросом, зачем формулы? Посмотрите пример решения на старом форуме, а еще и здесь было :)
Изменено: Igor67 - 19.04.2013 20:33:27
 
Написано много, а понять задачу сложно...
 
Не зря опасался что непонятно будет, хотя старался :oops: Попробую покороче. Хочу вызвать форму и, заполнив, скажем 5 строк данными внести эти строки в таблицу.Если потребуется, хочу впоследствии иметь возможность вновь вызвав форму и найдя комбобоксом "индекс" объекта увидеть в "блоках" комбобоксов уже введенные данные по этому объекту и иметь возможность изменить их и/или добавить строки, не испортив при этом уже введеные данные.
 
Цитата
Igor67 пишет:
Посмотрите пример решения
Спасибо Igor67, вариант вроде понятен, попробую под себя напильником допилить, но подскажите, если можете, как можно внести данные после последней заполненной строки (для примера 2-ой, т.е. начиная с 3-й) скажем 5 позиций, а в следующий раз при новом вносе данных в любом случае вносить данные с 13, далее с 23 и т.д.?
 
Цитата
xxlleeaa пишет:
заполнив, скажем 5 строк данными внести эти строки в таблицу
У Вас, кажется, не верное виденье. Зачем делать форму с 5 строками для ввода данных, тогда легче это все делать на листе сразу. На форме Вы вводите по 1 строке, и форма позволяет делать это более гибко. Но это мое мнение.
 
Согласен с Игорем: на форме обычно заполняют данные для одной строки. Если требуется корректировка существующей записи, или добавление новой, то можно сделать две кнопки: "Редактировать" и "Новая запись".
 
Igor67, на форме вообще-то предполагается сделать 10 блоков (это, по словам заказчика, максимальный объем строк для 1 объекта). На листе без формы (в принципе как сделано сейчас) было бы конечно проще решить проблему ввода строк просто в следующую, но одна проблема и побудила меня попробовать ввод через форму: если вы открывали мой файл, то наверное обратили внимание, что для формулы ВПР, которая используется для значений текстбоксов, исползуется один из комбобоксов, настроенных на разные таблицы. А как это сделать без формы, просто на листе? Ведь в функции ВПР не получается объяснить excel, что если он не нашел значение в одной таблице его следует искать в другой. Да и выпадающий списов в ячейке можно настроить только на 1 таблицу (черт с ним с тем что больше 8 строк не видно, а рисовать несколько сотен или тысяч элементов ActiveX совсем не смешно). Вот поэтому и придумалось мне попробовать вносить данные в таблицу через форму - значение текстбоксов по формулам расчитались, по команде на свободные строки вставились, а вот как сделать "запас" пустых строк придумать не могу, каждый раз вставлять строки с следующую после заполненной, а в следующую +10 как-то не очень правильно, рассчитать сколько было строк в предыдущем "блоке" и пропустить (10 - это количество) - слишком мудрено для меня
 
Ну почему ВПР() не может искать в двух таблицах? Ищем в одной, ЕСЛИ результата нет - ищем в другой.
 
xxlleeaa, Вы выбрали для себя совсем не простую задачу. Форма со множеством Фреймов и Мультипейджи - красиво, но сделав несколько решений с формами, не рискну в эту красоту втягиваться, замучаешься данные с них со считывать.
А если запись по 1 объекту занимает несколько строк, наверно надо столько и делать. Просто потом при вводе проверять все элементы циклом и вносить на лист.
 
Цитата
Hugo пишет:
Ищем в одной, ЕСЛИ результата нет - ищем в другой.
Hugo, у меня почему-то такие варианты приводят к результату Н/Д. Как должна выглядеть формула с ВПР, если скажем искомое значение находится в А1, таблица либо В1:В10 либо D1:D10, номер столбца 2, интервальный просмотр 0. Я и сам понимаю, что пытаюсь смастерить монстра со своей формой, но именно проблема 2 таблиц в формулах ВПР и подвигла меня на эти попытки  :D  Я бы тогда просто с маленькой формы с 2 комбобоксами в активную ячейку данные ввел и проблема была бы решена.
Изменено: xxlleeaa - 20.04.2013 08:41:56
 
Цитата
xxlleeaa пишет:
Как должна выглядеть формула с ВПР, если
Скорее всего так:
Если(еслиошибка(впр по таблице1);впр по таблице2; впр по таблице1)
 
Цитата
Sergei_A пишет:
Если(еслиошибка(впр по таблице1);впр по таблице2; впр по таблице1)
Спасибо Sergei_A, вроде получается, только немного не так: Если(еслиошибка(впр по таблице1);впр по таблице1; впр по таблице2) срабатывает, а Ваш вариант приводит к Н/Д, но все равно за идею огромное спасибо.
 
:)  да, виноват. Я ведь описал механизм, и под еслиошибка подразумевал функцию ЕОШИБКА. Но так совпало, что есть функция ЕСЛИОШИБКА, которая даёт другой результат. Бывает.
Изменено: Sergei_A - 20.04.2013 11:04:56
Страницы: 1
Читают тему
Наверх