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

Вход

Регистрация

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

 

= Мир MS Excel/Обновлять подсказку ComboBox'а при смене выбранного значения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновлять подсказку ComboBox'а при смене выбранного значения (Макросы/Sub)
Обновлять подсказку ComboBox'а при смене выбранного значения
alber2jr Дата: Воскресенье, 03.06.2018, 21:18 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Всем привет.

Делаю пользовательскую форму. Назначение формы - помочь пользователю составить договор из типовых и нетиповых фраз. Пользователь у меня несобранный... Например, если договор должен состоять из пунктов "родился", "учился", "женился", то мой пользователь запросто может какой-нибудь пропустить.

Для того, чтоы этого не случилось, на одном из листов динамически создаю N ComboBox'ов. N - переменная величина. Каждый элемент ComboBox'а - эта некая типовая фраза (1-3 предложения), который может входить в текст договора.

  • Если пользователь хочет вставить в договор типовую фразу, то выбирает из имеющихся вариантов ComboBox'а
  • Если пользователь хочет вставить в договор нетиповую фразу, то вносит свой вариант от руки.


Проблема: Форма у меня достаточно широкая, но 1-3 предложения целиком ни в один ComboBox не влезают. Нужно дать возможность пользователю увидеть весь текст целиком.

Идея: Пользователь выбрал текст в списке (событие Change). Чтобы убедиться, что не промахнулся, навел на Combobox. Появилась подсказка, в которую продублировалось выбранное им значение.

Сложности: Если бы N ComboBox'ов я создавал статически (предварительно), то проблему решили бы N макросов, завязанных на событие Change (поменялся выбор - переопредели текст подсказки). Не понимаю, как быть в динамике...

  • То ли искать способ на лету под с каждый список создавать макрос с завязкой на событие?
  • То ли есть способ заранее создать макрос и сказать ему: если списочные поля на этом листе формы изменят свои значения, то переопредели подсказки для них...


[p.s.]Ребят, я понимаю, что решение с подсказками может быть не самым изящным. Наверняка есть что-то более user-friendly. Но это мой первый большой проект, связанный с формами... Считай, учусь на нем. Увы, время ограничено.


Сообщение отредактировал alber2jr - Воскресенье, 03.06.2018, 21:20
 
Ответить
СообщениеВсем привет.

Делаю пользовательскую форму. Назначение формы - помочь пользователю составить договор из типовых и нетиповых фраз. Пользователь у меня несобранный... Например, если договор должен состоять из пунктов "родился", "учился", "женился", то мой пользователь запросто может какой-нибудь пропустить.

Для того, чтоы этого не случилось, на одном из листов динамически создаю N ComboBox'ов. N - переменная величина. Каждый элемент ComboBox'а - эта некая типовая фраза (1-3 предложения), который может входить в текст договора.

  • Если пользователь хочет вставить в договор типовую фразу, то выбирает из имеющихся вариантов ComboBox'а
  • Если пользователь хочет вставить в договор нетиповую фразу, то вносит свой вариант от руки.


Проблема: Форма у меня достаточно широкая, но 1-3 предложения целиком ни в один ComboBox не влезают. Нужно дать возможность пользователю увидеть весь текст целиком.

Идея: Пользователь выбрал текст в списке (событие Change). Чтобы убедиться, что не промахнулся, навел на Combobox. Появилась подсказка, в которую продублировалось выбранное им значение.

Сложности: Если бы N ComboBox'ов я создавал статически (предварительно), то проблему решили бы N макросов, завязанных на событие Change (поменялся выбор - переопредели текст подсказки). Не понимаю, как быть в динамике...

  • То ли искать способ на лету под с каждый список создавать макрос с завязкой на событие?
  • То ли есть способ заранее создать макрос и сказать ему: если списочные поля на этом листе формы изменят свои значения, то переопредели подсказки для них...


[p.s.]Ребят, я понимаю, что решение с подсказками может быть не самым изящным. Наверняка есть что-то более user-friendly. Но это мой первый большой проект, связанный с формами... Считай, учусь на нем. Увы, время ограничено.

Автор - alber2jr
Дата добавления - 03.06.2018 в 21:18
sboy Дата: Понедельник, 04.06.2018, 09:42 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Без Вашего файла могу только посоветовать реализацию
если списочные поля на этом листе формы изменят свои значения, то переопредели подсказки для них

через модуль класса
Почитать и пример тут


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Без Вашего файла могу только посоветовать реализацию
если списочные поля на этом листе формы изменят свои значения, то переопредели подсказки для них

через модуль класса
Почитать и пример тут

Автор - sboy
Дата добавления - 04.06.2018 в 09:42
StoTisteg Дата: Понедельник, 04.06.2018, 10:27 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
alber2jr, я так понимаю, что задача — сборка текста из модулей на выбор? Я бы так предложил — один Комбо и один Текст, три кнопки — ОК, Далее, назад. Идём последовательно от начала к концу, каждый раз в Комбо выводятся подсказки с вариантами выбора, как только юзер выбрал и нажал ОК — в Текст — полный вариант выбранного ОК блокируем, затем если Далее — к следующему блоку, Назад — к предыдущему. И так пока всё не заполним.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщениеalber2jr, я так понимаю, что задача — сборка текста из модулей на выбор? Я бы так предложил — один Комбо и один Текст, три кнопки — ОК, Далее, назад. Идём последовательно от начала к концу, каждый раз в Комбо выводятся подсказки с вариантами выбора, как только юзер выбрал и нажал ОК — в Текст — полный вариант выбранного ОК блокируем, затем если Далее — к следующему блоку, Назад — к предыдущему. И так пока всё не заполним.

Автор - StoTisteg
Дата добавления - 04.06.2018 в 10:27
boa Дата: Понедельник, 04.06.2018, 17:30 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
alber2jr,
так?
[vba]
Код

Private Sub UserForm_Initialize()
    Dim meArr():  meArr = Array("Значение1", "Значение2", "Значение3", "Значение4", "Значение5", "Значение6", "Значение7")
    Me.ComboBox1.ListWidth = 500 ' установите желаемую ширину выпадающего списка
    Me.ComboBox1.List = meArr
End Sub

Private Sub ComboBox1_Change()
    Me.ComboBox1.ControlTipText = Me.ComboBox1.Value    'присвойте выбранное значение подсказке
    Me.Label1.Caption = Me.ComboBox1.Value              'или текстовому полю
End Sub
[/vba]
К сообщению приложен файл: ComboBox.xlsb (15.3 Kb)


 
Ответить
Сообщениеalber2jr,
так?
[vba]
Код

Private Sub UserForm_Initialize()
    Dim meArr():  meArr = Array("Значение1", "Значение2", "Значение3", "Значение4", "Значение5", "Значение6", "Значение7")
    Me.ComboBox1.ListWidth = 500 ' установите желаемую ширину выпадающего списка
    Me.ComboBox1.List = meArr
End Sub

Private Sub ComboBox1_Change()
    Me.ComboBox1.ControlTipText = Me.ComboBox1.Value    'присвойте выбранное значение подсказке
    Me.Label1.Caption = Me.ComboBox1.Value              'или текстовому полю
End Sub
[/vba]

Автор - boa
Дата добавления - 04.06.2018 в 17:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновлять подсказку ComboBox'а при смене выбранного значения (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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