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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир 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
Группа: Друзья
Ранг: Старожил
Сообщений: 2112
Репутация: 605 ±
Замечаний: 0% ±

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

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

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

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

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


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

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

2013, 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-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!