Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 11:36   #1
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию ComboBox

Привет!

Помогите написать ComboBox, что бы при выборе в нем количества месяцев, коэффициенту К присваивалось определенное число.

Я думал что должно быть примерно так:
Код:
Dim K As double
ComboBox1.AddItem([1],[1]) = "1 месяц"
ComboBox1.AddItem([2],[2]) = "2 месяца"
ComboBox1.AddItem([3],[3]) = "3 месяца"

If ComboBox1.Value = "1 месяц" Then
K=0.15
ElseIf ComboBox1.Value = "2 месяца" Then
K=0.20
ElseIf ComboBox1.Value = "3 месяца" Then
K=0.25
End If
Но это не работает

Как правильно будет? (Пишу в Excel на UserForm)
dr.dimm вне форума Ответить с цитированием
Старый 12.12.2013, 12:02   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно так
Код:
Private Sub Use()
    Dim K As Double
    If ComboBox1.ListIndex = -1 Then Exit Sub
    K = Val(ComboBox1.List(ComboBox1.ListIndex, 1))

End Sub

Private Sub UserForm_Initialize()
    ComboBox1.AddItem ("1 месяц")
    ComboBox1.List(0, 1) = 0.15
    ComboBox1.AddItem "2 месяца"
    ComboBox1.List(1, 1) = 0.2
    ComboBox1.AddItem "3 месяца"
    ComboBox1.List(1, 1) = 0.25
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.12.2013, 14:19   #3
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Спасибо БОЛЬШОЕ Добер!

я еще добавил кнопочку
Код:
Private Sub CommandButton1_Click()
MsgBox (ComboBox1.List(ComboBox1.ListIndex, 1))
End Sub
И тут наверное опечатка:
Код:
ComboBox1.AddItem "3 месяца"
ComboBox1.List(2, 1) = 0.25
dr.dimm вне форума Ответить с цитированием
Старый 12.12.2013, 15:34   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Ошибся,все верно.Надо по классике так делать
Код:
   ComboBox1.AddItem "3 месяца"
    ComboBox1.List(ComboBox1.Listcount-1, 1) = 0.25
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.12.2013, 21:16   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте dr.dimm.
В дополнение к варианту предложенному doober.
К контролам отображающим списки в качестве источника можно подключать массив:
Код:
Private Sub ComboBox1_GotFocus()
Dim vList()
    vList = Array("1 месяц", "2 месяца", "3 месяца")
    ComboBox1.List = vList
End Sub
и так-же из массива получать результат.
Код:
Private Sub ComboBox1_Change()
Dim vVal()
    vVal = Array(0.15, 0.2, 0.25)
    v = vVal(ComboBox1.ListIndex)
    MsgBox v
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 23.12.2013, 17:13   #6
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Подскажите пожалуйста, как правильно задать значение в комбо боксе по умолчанию?
dr.dimm вне форума Ответить с цитированием
Старый 23.12.2013, 17:43   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Правильно?
так:
ComboBox1.Text = "Васян"
или так:
ComboBox1.ListIndex = 2

видимо вопрос в том, когда это значение должно там появиться?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.12.2013, 18:53   #8
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Как вариант, если коэффиценты пропорциональны можно привязать к листиндексу
Код:
K = ComboBox1.ListIndex*0.5 + 0.15
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 23.12.2013, 20:48   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Еще:
Код:
Private Sub ComboBox1_Change()
    Dim K#
    If ComboBox1.ListIndex = -1 Then Exit Sub
    K = Choose(ComboBox1.ListIndex + 1, 0.15, 0.2, 0.25)
    MsgBox K
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.List = Array("1 месяц", "2 месяца", "3 месяца")
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 23.12.2013, 21:04   #10
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

И чего вас всех в код тянет?
Спрашивают же - значение по умолчанию.

Properties - ComboBox1 - Value = "123"
RAN. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Webbrowser и combobox: сделать чтобы в combobox-е оставалась история посещенных сайтов uasya2 Общие вопросы Delphi 6 06.03.2011 20:24
Combobox -> DBGrid -> Combobox... EXTREEM БД в Delphi 2 20.12.2010 18:19
Разделение ComboBox на 3 ComboBox-a artemavd Общие вопросы Delphi 1 21.07.2010 08:02
ComboBox Есет Помощь студентам 1 27.03.2008 09:10
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45