Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сопоставление на листе и удаление из ListBox "на лету" - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сопоставление на листе и удаление из ListBox "на лету" (Макросы/Sub)
Сопоставление на листе и удаление из ListBox "на лету"
StoTisteg Дата: Суббота, 20.02.2016, 23:41 | Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Пытаюсь решить казалось бы тривиальную задачу.
Есть лист, на котором в column(1) находятся имена. Этим именам нужно сопоставить идентификаторы, список которых находится в текстовом файле. Причём идентификаторы для каждого имени уникальны, сопоставление может делать только человек — алгоритмизация невозможна. При этом некоторым именам может не соответствовать ничего (в примере — идентификатор "Пуля")
Я пытаюсь это реализовать ListBox'ом, удаляя из него выбранный идентификатор "на лету", если он не равен "Пуля", чтобы исключить повторы. Как именно я это реализую, показано в примере.
Самое удивительное и возмутительное, что по по F8 макрос отрабатывает как паинька, а при автоматическом запуске заполняет не одну, как надо, а довольно рандомное число строк :o
ЧЯДНТ???
К сообщению приложен файл: Beasts.rar(26Kb)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Суббота, 20.02.2016, 23:41
 
Ответить
СообщениеПытаюсь решить казалось бы тривиальную задачу.
Есть лист, на котором в column(1) находятся имена. Этим именам нужно сопоставить идентификаторы, список которых находится в текстовом файле. Причём идентификаторы для каждого имени уникальны, сопоставление может делать только человек — алгоритмизация невозможна. При этом некоторым именам может не соответствовать ничего (в примере — идентификатор "Пуля")
Я пытаюсь это реализовать ListBox'ом, удаляя из него выбранный идентификатор "на лету", если он не равен "Пуля", чтобы исключить повторы. Как именно я это реализую, показано в примере.
Самое удивительное и возмутительное, что по по F8 макрос отрабатывает как паинька, а при автоматическом запуске заполняет не одну, как надо, а довольно рандомное число строк :o
ЧЯДНТ???

Автор - StoTisteg
Дата добавления - 20.02.2016 в 23:41
StoTisteg Дата: Воскресенье, 21.02.2016, 00:33 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Я бы и плюнул и сделал бы выбор "цвета" через CheckBox или OptionButton. Когда бы этих самых "цветов" не было шесть десятков... Размеры формы, как вы понимаете, получатся совершенно конские.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеЯ бы и плюнул и сделал бы выбор "цвета" через CheckBox или OptionButton. Когда бы этих самых "цветов" не было шесть десятков... Размеры формы, как вы понимаете, получатся совершенно конские.

Автор - StoTisteg
Дата добавления - 21.02.2016 в 00:33
doober Дата: Воскресенье, 21.02.2016, 01:12 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 407
Репутация: 200 ±
Замечаний: 0% ±

Excel 2007
не удачно выбрали событие
Лучше в DblClick клик перенести или клик
[vba]
Код
Private Sub lst_ГС_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    With frm_Форма.lst_ГС
        If .Value > 0 Then 'Если выбрано не "Пуля"...
            Cells(FormString, 2) = .Text 'Копируем выбранное на страницу
        End If
    End With
    frm_Форма.Hide

End Sub
[/vba]


 
Ответить
Сообщениене удачно выбрали событие
Лучше в DblClick клик перенести или клик
[vba]
Код
Private Sub lst_ГС_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    With frm_Форма.lst_ГС
        If .Value > 0 Then 'Если выбрано не "Пуля"...
            Cells(FormString, 2) = .Text 'Копируем выбранное на страницу
        End If
    End With
    frm_Форма.Hide

End Sub
[/vba]

Автор - doober
Дата добавления - 21.02.2016 в 01:12
StoTisteg Дата: Воскресенье, 21.02.2016, 02:14 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Клик не годится, его вызывает и прокрутка тоже. А даблклик мне не нравится чисто эстетически. Хотя если учесть, что макрос предназначен для не сильно частого обучения бота новой выборке...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 21.02.2016, 02:14
 
Ответить
СообщениеКлик не годится, его вызывает и прокрутка тоже. А даблклик мне не нравится чисто эстетически. Хотя если учесть, что макрос предназначен для не сильно частого обучения бота новой выборке...

Автор - StoTisteg
Дата добавления - 21.02.2016 в 02:14
StoTisteg Дата: Вторник, 23.02.2016, 05:47 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
В общем я не знаю почему, но если Me.Hide вынести в событие MouseDown, а в событии Change не изменять содержимое ячейки, а запоминать выбранное значение и вставлять его в ячейку уже в макросе, то оно таки работает hands А почему форма увлечённо беседовала сама с собой, я так и не понял :o


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеВ общем я не знаю почему, но если Me.Hide вынести в событие MouseDown, а в событии Change не изменять содержимое ячейки, а запоминать выбранное значение и вставлять его в ячейку уже в макросе, то оно таки работает hands А почему форма увлечённо беседовала сама с собой, я так и не понял :o

Автор - StoTisteg
Дата добавления - 23.02.2016 в 05:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сопоставление на листе и удаление из ListBox "на лету" (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!