Событие Change

24.01.2013
4
0
#1
Здрасте товарищи. Есть такой код.
Код:
Private Sub UserForm_Initialize()
'список плавких вставок
With Combo_PPN
.AddItem "ППН200"
.AddItem "ППН400"
.AddItem "ППН500"
.AddItem "ППН630"
End With
'выводим значение текущих уставок
With UserForm1
.Combo_ty.Value = Range("G4")
.Combo_Kots.Value = Range("отсечка")
.Combo_Diap.Value = Range("диапазон")
.Combo_Iy.Value = Range("E4")
.Combo_PPN.Value = Range("вставка")
.Combo_umnt.Value = Range("коэфф_врем_текст")
.Combo_Un.Value = Range("U_1")
.Combo_Str.Value = Range("Sном")
.Combo_RelePKL = Range("ПКЛ")
.Combo_TipTr = Range("тип_тр")
End With
End Sub

Private Sub Combo_PPN_Change()
'изменяем график плавкой вставки
Worksheets("формулы").Activate
Range("вставка").Value = Combo_PPN.Value
PPN
End Sub
При загрузке формы создаются поля комбосписка Combo_PPN, и ему присваивается значение из ячейки"вставка". При выборе какого-либо значения из списка это значение записывается в ячейку "вставка" и выводится соответствующий график (процедура PPN).
Проблема в том, что событие Change наступает при любом изменении комбосписка, в том числе и при создании полей при запуске формы. Нельзя ли сделать так, чтоб оно наступало только при выборе значения из списка?
 

alex77755

Well-known member
15.02.2009
128
0
#4
Код:
Dim RED As Boolean

Private Sub ComboBox1_Click()
If Not RED Then
MsgBox "Ok"
End If
End Sub

Private Sub UserForm_Initialize()
Dim i
RED = True
For i = 1 To 10
ComboBox1.AddItem i
Next i
RED = False
End Sub
 

alex77755

Well-known member
15.02.2009
128
0
#7
Я же не знаю какое событие вы используете. А если попробовать, то можно увидеть, что при выборе из списка события Change не наступает. Наступает только клик. А вот если пробовать писать в окне то будет чанге. Комбик чаще используют именно для выбора из списка поэтому и клик
 
24.01.2013
4
0
#8
может быть, дело вот в чем?
или вот в чем
Код:
'выводим значение текущих уставок
With UserForm1
.Combo_ty.Value = Range("G4")
.Combo_Kots.Value = Range("отсечка")
.Combo_Diap.Value = Range("диапазон")
.Combo_Iy.Value = Range("E4")
.Combo_PPN.Value = Range("вставка")
.Combo_umnt.Value = Range("коэфф_врем_текст")
.Combo_Un.Value = Range("U_1")
.Combo_Str.Value = Range("Sном")
.Combo_RelePKL = Range("ПКЛ")
.Combo_TipTr = Range("тип_тр")
End With
 

alex77755

Well-known member
15.02.2009
128
0
#9
Ну да, здесь событие изменение, а не клик.
Но в таком режиме я практически никогда не использую комбо.
Он для этого и придуман. Не вписывать значения, а выбирать из списка.
В крайнем случае добавлять в список но не вписывать.
Даже часто задают вопрос как запретить ручной ввод в поле текстбокса