Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Снова за старое listbox

3.7K
26 августа 2005 года
blind7
56 / / 12.01.2005
В excel есть форма на ней listbox с множеством колонок.
Listbox заполняется из листа excel (в той же книге что и форма)
При выборе определенной строки - заполняются поля формы.
Далее необходимо изменить некоторые данные посредством второго listbox.
Данные благополучно изменяются, а вот дальше засада.
Необходимо по нажатии на кнопку (в форме) "перезаписать данные" они таки перезаписываются но криво ибо почаму то независимо от того какие данные подставлены всегда записываются данные находящиеся в первой строке листа из которого заполняется листвобкс.

Описал муторно может надо привести пример? несмотря на то что мной тема по данному проекту обсуждалась уже не один раз, а воз как говорится и ныне там.

P.S. При перезаписи данных я перезаписываю листбокс.
275
26 августа 2005 года
pashulka
985 / / 19.09.2004
А как насчёт небольшого примерчика в виде .xls файла ... можно даже без конфиденциальных данных.

P.S. Если хотите, то можете отправить мне напрямую, адрес Вы знаете (если не забыли конечно)
3.7K
26 августа 2005 года
blind7
56 / / 12.01.2005
Цитата:
Originally posted by pashulka
А как насчёт небольшого примерчика в виде .xls файла ... можно даже без конфиденциальных данных.

P.S. Если хотите, то можете отправить мне напрямую, адрес Вы знаете (если не забыли конечно)



Адрес конечно не забыль скину сюда, сейчас нет возможности воспользоваться почтой.

Итак.
Код не оптимизировал, не было времени.

Описание Проблемы:
Вводим данные по кнопке "Забить описи и послать"
В форму бьём то что нужно по конкретным данным, а именно адрес/дату/количество товара
Для заполения описи жмем - Заполнить (заполняет опись на "Лист3")
Далее для сохранения жмем - Сохранить (сохраняет данные на "Лист4", в пустую строку в конце данных)
Далее распечатывае - Печатать (печатает опись с "Лист3")
Выход и так понятно

Сдесь проблем нет, это описание процедуры.
А вот далее возникает проблема. Описываю
Предположим вы ошиблись вы дате или в адресе ну или еще в чем. На этот случай есть кнопка "Отредактировать в описях и послать"
Нажимаем, открываеться форма
Выбираем тот случай который необходимо отредактировать (посредством клика мышкой).
Данные с "Лист4" Подставляются в форму
Предположим необходимо изменить адрес - выбираем нужный адрес затем
Кликаем как и в верхнем случае заполнить
Далее "Перезаписать"
ВОТ В ЭТОТ момент происходит сбой - почаму то данные которые отредактированы не перезаписываются а вместо этого данные находящиеся во второй строке листа пишутся на первую пустую строку после данных.
Вот это и не могу побороть, посему спрашиваю Вас как исправить..

275
27 августа 2005 года
pashulka
985 / / 19.09.2004
Решений Вашего вопроса может быть несколько :
1 - заменить свойство .RowSource на .List с последующим изменением всего кода (в т.ч. числе удаление проверок и всё что связано .Tag)
2 - заменить событие Private Sub ListBox1_Click() на событие Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) см. пример
3 - вместо применения ListBox1.ListIndex использовать переменную, а вместо проверки с .Tag использовать, например :
 
Код:
Private Sub ListBox1_Click()
If ActiveControl.Name = ListBox1.Name Then

4 - изменять значения сразу в нескольких ячейках (строке)
5 - наверняка существуют и другие, принципиально иные принципы решения.

P.S. Честно говоря я бы не использовал .Activate и .SpecialCells(xlLastCell) так как в Вашем случае без этого можно обойтись.
3.7K
28 ноября 2005 года
blind7
56 / / 12.01.2005
ну вот
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог