Подскажите пожалуиста. По заданному условия в элементе ActiveX меняется список. Код
[vba]
Код
Private Sub ComboBox1_Change() If Лист4.Range("G1").Value = 1 Then ComboBox1.ListFillRange = "Износ361" End If If Лист4.Range("G1").Value = 2 Then ComboBox1.ListFillRange = "Износ14" End If End Sub
[/vba]
Но когда условие меняется список меняется не сразу, а только после того как в старом списке, что то повыбираешь. Как сделать, чтобы список сразу менялся как только сменилось условие? [moder]Тему перенес
Подскажите пожалуиста. По заданному условия в элементе ActiveX меняется список. Код
[vba]
Код
Private Sub ComboBox1_Change() If Лист4.Range("G1").Value = 1 Then ComboBox1.ListFillRange = "Износ361" End If If Лист4.Range("G1").Value = 2 Then ComboBox1.ListFillRange = "Износ14" End If End Sub
[/vba]
Но когда условие меняется список меняется не сразу, а только после того как в старом списке, что то повыбираешь. Как сделать, чтобы список сразу менялся как только сменилось условие? [moder]Тему перенесkomisrenis
Вы меняете список не там, где нужно. Он ведь должен измениться, когда меняется ячейка G1? Удалите свою процедуру. В модуль Лист4 добавьте процедуру: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Лист4.Range("G1")) Is Nothing Then
Select Case Target.Value Case 1 ComboBox1.ListFillRange = "Износ361" Case 2 ComboBox1.ListFillRange = "Износ14" End Select ComboBox1.ListIndex = -1
End If
End Sub
[/vba]
Вы меняете список не там, где нужно. Он ведь должен измениться, когда меняется ячейка G1? Удалите свою процедуру. В модуль Лист4 добавьте процедуру: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Лист4.Range("G1")) Is Nothing Then
Select Case Target.Value Case 1 ComboBox1.ListFillRange = "Износ361" Case 2 ComboBox1.ListFillRange = "Износ14" End Select ComboBox1.ListIndex = -1
Нет не могу. Помоги те плз. ) Как бы я в этой области не компетентен. Мне бы на пальцах разъяснить. Т.е. у меня есть элемент "Выбор из списка". В зависимости от условий там меняются списки. Но обновляются не сразу как сменилось условие, а только после попыток выбора в старом списки. Т.е. к списку нужно обращать 2 раза, при смени условия, т.к. как там остаётся старый пока не попытаешься повыбирать. Хотелось бы чтобы при смени условия сразу менялся список, т.е. обновлялся на новый.
Нет не могу. Помоги те плз. ) Как бы я в этой области не компетентен. Мне бы на пальцах разъяснить. Т.е. у меня есть элемент "Выбор из списка". В зависимости от условий там меняются списки. Но обновляются не сразу как сменилось условие, а только после попыток выбора в старом списки. Т.е. к списку нужно обращать 2 раза, при смени условия, т.к. как там остаётся старый пока не попытаешься повыбирать. Хотелось бы чтобы при смени условия сразу менялся список, т.е. обновлялся на новый.komisrenis
Работает так: меняется условие в зависимости от даты ДТП в "Ячейки условия". Соответственно меняется список в элементе, но не сразу,а после попыток выбора значения в списке. Необходимо,что бы список менялся сразу и уже выбирвать можно было из нового списка.
Работает так: меняется условие в зависимости от даты ДТП в "Ячейки условия". Соответственно меняется список в элементе, но не сразу,а после попыток выбора значения в списке. Необходимо,что бы список менялся сразу и уже выбирвать можно было из нового списка.komisrenis
Это не переводчик, а всего лишь скрин первой формы моего файла расчета износа. Защита от дурака. Под новую методику не адаптирован. Пользуется файлом 3 человека. Все расчеты макросом. В инет не выкладывал, и не собираюсь. Выходная форма Форма ввода
Это не переводчик, а всего лишь скрин первой формы моего файла расчета износа. Защита от дурака. Под новую методику не адаптирован. Пользуется файлом 3 человека. Все расчеты макросом. В инет не выкладывал, и не собираюсь. Выходная форма Форма ввода RAN
Прям шедевр, только зачем? В системе расчёта ущерба куда шире расчёты нужны, а не красивая табличка с износом. У меня форма проще и работает на 2 ПП. Сейчас уже не актуально 361. Мне бы не флуд разводить хотелось бы, а ответ получить по теме.
Прям шедевр, только зачем? В системе расчёта ущерба куда шире расчёты нужны, а не красивая табличка с износом. У меня форма проще и работает на 2 ПП. Сейчас уже не актуально 361. Мне бы не флуд разводить хотелось бы, а ответ получить по теме.komisrenis
Private Sub Worksheet_Calculate() If [G1] Then If ComboBox1.ListFillRange <> "Износ361" Then ComboBox1.ListFillRange = "Износ361" ComboBox1.ListIndex = -1 End If Else If ComboBox1.ListFillRange <> "Износ14" Then ComboBox1.ListFillRange = "Износ14" ComboBox1.ListIndex = -1 End If End If
End Sub
[/vba]
формула
Код
=E5<41928
макрос [vba]
Код
Private Sub Worksheet_Calculate() If [G1] Then If ComboBox1.ListFillRange <> "Износ361" Then ComboBox1.ListFillRange = "Износ361" ComboBox1.ListIndex = -1 End If Else If ComboBox1.ListFillRange <> "Износ14" Then ComboBox1.ListFillRange = "Износ14" ComboBox1.ListIndex = -1 End If End If
Только вот не задача. Если дату ДТП изменять, так чтобы она не меня условия, то всё равно поле со списком очищается, что естественно не нужно. Т.е. каждый раз при вводе даты ДТП нужно выбирать из списка соответствующий тип ТС, хотя список не изменился. Как бы это скорректировать.
Только вот не задача. Если дату ДТП изменять, так чтобы она не меня условия, то всё равно поле со списком очищается, что естественно не нужно. Т.е. каждый раз при вводе даты ДТП нужно выбирать из списка соответствующий тип ТС, хотя список не изменился. Как бы это скорректировать.komisrenis
komisrenis, ты сам-то понял собственный спич? "Если сменить дату ДТП" - то это, ИМХО, другое ДТП. Т.е. другое ТС. Для этого и сделано - заставим пользователя "принудительно" выбрать правильный тип. Если не надо "сбрасывать" имеющийся список - закомментируй в коде строчку с .ListIndex, чтобы она не исполнялась, именно в ней и происходит сброс выбранного "до этого" значения в списке. [offtop]P.S. Я же просил самому разобраться с кодом :)[/offtop]
komisrenis, ты сам-то понял собственный спич? "Если сменить дату ДТП" - то это, ИМХО, другое ДТП. Т.е. другое ТС. Для этого и сделано - заставим пользователя "принудительно" выбрать правильный тип. Если не надо "сбрасывать" имеющийся список - закомментируй в коде строчку с .ListIndex, чтобы она не исполнялась, именно в ней и происходит сброс выбранного "до этого" значения в списке. [offtop]P.S. Я же просил самому разобраться с кодом :)[/offtop]AndreTM