Снова за старое listbox
Listbox заполняется из листа excel (в той же книге что и форма)
При выборе определенной строки - заполняются поля формы.
Далее необходимо изменить некоторые данные посредством второго listbox.
Данные благополучно изменяются, а вот дальше засада.
Необходимо по нажатии на кнопку (в форме) "перезаписать данные" они таки перезаписываются но криво ибо почаму то независимо от того какие данные подставлены всегда записываются данные находящиеся в первой строке листа из которого заполняется листвобкс.
Описал муторно может надо привести пример? несмотря на то что мной тема по данному проекту обсуждалась уже не один раз, а воз как говорится и ныне там.
P.S. При перезаписи данных я перезаписываю листбокс.
P.S. Если хотите, то можете отправить мне напрямую, адрес Вы знаете (если не забыли конечно)
А как насчёт небольшого примерчика в виде .xls файла ... можно даже без конфиденциальных данных.
P.S. Если хотите, то можете отправить мне напрямую, адрес Вы знаете (если не забыли конечно)
Адрес конечно не забыль скину сюда, сейчас нет возможности воспользоваться почтой.
Итак.
Код не оптимизировал, не было времени.
Описание Проблемы:
Вводим данные по кнопке "Забить описи и послать"
В форму бьём то что нужно по конкретным данным, а именно адрес/дату/количество товара
Для заполения описи жмем - Заполнить (заполняет опись на "Лист3")
Далее для сохранения жмем - Сохранить (сохраняет данные на "Лист4", в пустую строку в конце данных)
Далее распечатывае - Печатать (печатает опись с "Лист3")
Выход и так понятно
Сдесь проблем нет, это описание процедуры.
А вот далее возникает проблема. Описываю
Предположим вы ошиблись вы дате или в адресе ну или еще в чем. На этот случай есть кнопка "Отредактировать в описях и послать"
Нажимаем, открываеться форма
Выбираем тот случай который необходимо отредактировать (посредством клика мышкой).
Данные с "Лист4" Подставляются в форму
Предположим необходимо изменить адрес - выбираем нужный адрес затем
Кликаем как и в верхнем случае заполнить
Далее "Перезаписать"
ВОТ В ЭТОТ момент происходит сбой - почаму то данные которые отредактированы не перезаписываются а вместо этого данные находящиеся во второй строке листа пишутся на первую пустую строку после данных.
Вот это и не могу побороть, посему спрашиваю Вас как исправить..
1 - заменить свойство .RowSource на .List с последующим изменением всего кода (в т.ч. числе удаление проверок и всё что связано .Tag)
2 - заменить событие Private Sub ListBox1_Click() на событие Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) см. пример
3 - вместо применения ListBox1.ListIndex использовать переменную, а вместо проверки с .Tag использовать, например :
If ActiveControl.Name = ListBox1.Name Then
4 - изменять значения сразу в нескольких ячейках (строке)
5 - наверняка существуют и другие, принципиально иные принципы решения.
P.S. Честно говоря я бы не использовал .Activate и .SpecialCells(xlLastCell) так как в Вашем случае без этого можно обойтись.