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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение label на основе значений ComboBox - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Заполнение label на основе значений ComboBox
Stormy Дата: Четверг, 06.02.2014, 19:16 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 366
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер!
Столкнулся с проблемой след. типа.
Есть ComboBox в нем список материалов, есть таблица откуда берется этот список материалов. Напротив каждого материала проставлена единица измерения. Пытаюсь в label получить данные из ячейки А1 в которой при помощи ВПР нахожу необходимое Ед. Изм. Хотя чувствую, что правильнее писать формулу в самом макросе, но пока знаний не хватает на это.
С аналогичной ситуацией и с текстбоксом вопрос был решен так.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address(0, 0) <> "F17" Then Exit Sub
With Range("G19")
     Me.Multipage.Pages(0).label15.Caption = IIf(IsError(.Value), "no data", .Value)
End With

End Sub
[/vba]
С КомбоБоксом не получается сделать тоже самое. В чем скрыта ошибка?
К сообщению приложен файл: 5895397.xls (44.0 Kb)


Место для рекламы.
 
Ответить
СообщениеДобрый вечер!
Столкнулся с проблемой след. типа.
Есть ComboBox в нем список материалов, есть таблица откуда берется этот список материалов. Напротив каждого материала проставлена единица измерения. Пытаюсь в label получить данные из ячейки А1 в которой при помощи ВПР нахожу необходимое Ед. Изм. Хотя чувствую, что правильнее писать формулу в самом макросе, но пока знаний не хватает на это.
С аналогичной ситуацией и с текстбоксом вопрос был решен так.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address(0, 0) <> "F17" Then Exit Sub
With Range("G19")
     Me.Multipage.Pages(0).label15.Caption = IIf(IsError(.Value), "no data", .Value)
End With

End Sub
[/vba]
С КомбоБоксом не получается сделать тоже самое. В чем скрыта ошибка?

Автор - Stormy
Дата добавления - 06.02.2014 в 19:16
nilem Дата: Четверг, 06.02.2014, 20:02 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Stormy,
может, вам все-таки обычные формы (UserForm) использовать? Там вроде не так замороченно, как для АктивХ на листе.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеStormy,
может, вам все-таки обычные формы (UserForm) использовать? Там вроде не так замороченно, как для АктивХ на листе.

Автор - nilem
Дата добавления - 06.02.2014 в 20:02
Stormy Дата: Пятница, 07.02.2014, 08:55 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 366
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
nilem,
Приветствую. Вы правы, придется переходить на вариант с формами. Там возникает такой вопрос, как сделать, чтобы форма ( запуск формы привязан к открытию книги) была привязана к определенному месту на листе и пользователь не мог изменить местоположение формы?


Место для рекламы.
 
Ответить
Сообщениеnilem,
Приветствую. Вы правы, придется переходить на вариант с формами. Там возникает такой вопрос, как сделать, чтобы форма ( запуск формы привязан к открытию книги) была привязана к определенному месту на листе и пользователь не мог изменить местоположение формы?

Автор - Stormy
Дата добавления - 07.02.2014 в 08:55
nilem Дата: Пятница, 07.02.2014, 09:18 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
можно прямо в свойствах формы задать:
StartUpPosition 0-Manual
Top столько-то
Left столько-то
можно даже типа такого (при инициализации/активации)
[vba]
Код
Me.Top=range("B10").top
Me.Left=range("B10").Left
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможно прямо в свойствах формы задать:
StartUpPosition 0-Manual
Top столько-то
Left столько-то
можно даже типа такого (при инициализации/активации)
[vba]
Код
Me.Top=range("B10").top
Me.Left=range("B10").Left
[/vba]

Автор - nilem
Дата добавления - 07.02.2014 в 09:18
Stormy Дата: Пятница, 07.02.2014, 10:48 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 366
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
nilem,
Начал делать формы. Читая форум нашел пару сообщений где настоятельно рекомендуется использовать разные формы для ввода (если их несколько типов). Это к MultiPage тоже относится или MultiPage и является сборником разных форм и лучше использовать ее? Еще момент . Что лучше производить вычисления в ячейке Excel и в форму получать результат или непосредственно в макросе производить расчет по формуле. Что продуктивнее?


Место для рекламы.
 
Ответить
Сообщениеnilem,
Начал делать формы. Читая форум нашел пару сообщений где настоятельно рекомендуется использовать разные формы для ввода (если их несколько типов). Это к MultiPage тоже относится или MultiPage и является сборником разных форм и лучше использовать ее? Еще момент . Что лучше производить вычисления в ячейке Excel и в форму получать результат или непосредственно в макросе производить расчет по формуле. Что продуктивнее?

Автор - Stormy
Дата добавления - 07.02.2014 в 10:48
Stormy Дата: Пятница, 07.02.2014, 12:13 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 366
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Эххх... Теперь возникла проблема с значениями в Caption VBA не хочет понимать турецкий язык (( Что делать? Ставить турецкий пакет или можно как-то *легким путем* научить VBA понимать Unicode?


Место для рекламы.
 
Ответить
СообщениеЭххх... Теперь возникла проблема с значениями в Caption VBA не хочет понимать турецкий язык (( Что делать? Ставить турецкий пакет или можно как-то *легким путем* научить VBA понимать Unicode?

Автор - Stormy
Дата добавления - 07.02.2014 в 12:13
nilem Дата: Пятница, 07.02.2014, 12:13 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Лучше "непосредственно в макросе производить расчет". Чем реже обращаемся из ВБА к ячейкам листа, тем лучше.
По поводу формы сложно что-то посоветовать, все зависит от конкретной задачи. На мой взгляд лучше/проще, когда есть одна форма со всеми необходимыми эл-тами управл-я (контролами). В зависимости от ситуации часть контролов можно делать невидимыми (или заблокированными); можно изменить размеры формы, чтобы польз-лю показывать только нужный набор контролов; или перемещать эл-ты по форме и т.д., вариантов много.
Кстати, можно использовать отдельный лист для ввода данных - просто вводим значения в ячейки, без всяких форм.

И еще. Раз уж вы на форуме, обращайтесь ко всем. Возможно, у кого-то есть интересное решение, а он такой:"Ну если обращаются к кому-то конкретно, то не покажу свое интересное решение!" как-то так :)


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

И еще. Раз уж вы на форуме, обращайтесь ко всем. Возможно, у кого-то есть интересное решение, а он такой:"Ну если обращаются к кому-то конкретно, то не покажу свое интересное решение!" как-то так :)

Автор - nilem
Дата добавления - 07.02.2014 в 12:13
  • Страница 1 из 1
  • 1
Поиск:

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