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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сопоставление на листе и удаление из ListBox "на лету" (Макросы/Sub)
Сопоставление на листе и удаление из ListBox "на лету"
StoTisteg Дата: Суббота, 20.02.2016, 23:41 | Сообщение № 1
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

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


Интуитивно понятный код - это когда интуитивно понятно, что это код.

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

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

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


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

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

Excel 2010
не удачно выбрали событие
Лучше в 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
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

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


Интуитивно понятный код - это когда интуитивно понятно, что это код.

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

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

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


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

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

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