Всем, привет! Проблема в следующем. Пример очерёдности действий: 1-му комбобоксу присвоен список регионов. При изменении значения бокса формируется список клиентов, который присвоен 2-му боксу. 1) Выбираем регион в 1-м боксе; 2) Выбираем клиента во 2-м; 3) Опять выбираем регион в 1-м. При этом во 2-м значение изменяется. Причем появляется значение, которого нет в списке если открыть 2-й бокс. Хотелось бы, чтобы при выборе региона в 1-м, значение во 2-м не менялось. В дальнейшем планирую действия по команде Worksheet_Change. А, поскольку, значение 2-го бокса каждый раз меняется, то и Worksheet_Change каждый раз срабатывает. В свойствах боксов практически все настройки попробовал. Никак не получается. Помогите, плз!
Всем, привет! Проблема в следующем. Пример очерёдности действий: 1-му комбобоксу присвоен список регионов. При изменении значения бокса формируется список клиентов, который присвоен 2-му боксу. 1) Выбираем регион в 1-м боксе; 2) Выбираем клиента во 2-м; 3) Опять выбираем регион в 1-м. При этом во 2-м значение изменяется. Причем появляется значение, которого нет в списке если открыть 2-й бокс. Хотелось бы, чтобы при выборе региона в 1-м, значение во 2-м не менялось. В дальнейшем планирую действия по команде Worksheet_Change. А, поскольку, значение 2-го бокса каждый раз меняется, то и Worksheet_Change каждый раз срабатывает. В свойствах боксов практически все настройки попробовал. Никак не получается. Помогите, плз!pabchek
Private Sub CBox_фо_Change() aa = CBox_клиент.Value With Sheets("Списки").PivotTables("св_спис") .PivotFields("ФО").ClearAllFilters .PivotFields("ФО").CurrentPage = CBox_фо.Value End With CBox_клиент.Value = aa End Sub
[/vba]
И отключаем события, чтобы не срабатывали лишний раз[vba]
Код
Application.EnableEvents = 0
[/vba]Только включить потом не забудь
[vba]
Код
Private Sub CBox_фо_Change() Application.EnableEvents = 0 Application.Calculation = xlCalculationManual aa = CBox_клиент.Value With Sheets("Списки").PivotTables("св_спис") .PivotFields("ФО").ClearAllFilters .PivotFields("ФО").CurrentPage = CBox_фо.Value End With CBox_клиент.Value = aa Application.Calculation = xlCalculationAutomatic Application.EnableEvents = 0 End Sub
[/vba]
Запоминаем и возвращаем
[vba]
Код
Private Sub CBox_фо_Change() aa = CBox_клиент.Value With Sheets("Списки").PivotTables("св_спис") .PivotFields("ФО").ClearAllFilters .PivotFields("ФО").CurrentPage = CBox_фо.Value End With CBox_клиент.Value = aa End Sub
[/vba]
И отключаем события, чтобы не срабатывали лишний раз[vba]
Код
Application.EnableEvents = 0
[/vba]Только включить потом не забудь
[vba]
Код
Private Sub CBox_фо_Change() Application.EnableEvents = 0 Application.Calculation = xlCalculationManual aa = CBox_клиент.Value With Sheets("Списки").PivotTables("св_спис") .PivotFields("ФО").ClearAllFilters .PivotFields("ФО").CurrentPage = CBox_фо.Value End With CBox_клиент.Value = aa Application.Calculation = xlCalculationAutomatic Application.EnableEvents = 0 End Sub
Спасибо, Саш! Значение остается прежним. Но... По факту оно меняется и Worksheet_Change срабатывает. Может я не корректно задачу описал? Прошу извинить.
Спасибо, Саш! Значение остается прежним. Но... По факту оно меняется и Worksheet_Change срабатывает. Может я не корректно задачу описал? Прошу извинить.pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Пройди макрос (свой первоначальный) пошагово через F8, смотря при этом на КБ2. Он меняется в момент снятия фильтра со сводной. Если до этого был выбран 5-й элемент, то КБ2 покажет 5, если первый, то 1
Пройди макрос (свой первоначальный) пошагово через F8, смотря при этом на КБ2. Он меняется в момент снятия фильтра со сводной. Если до этого был выбран 5-й элемент, то КБ2 покажет 5, если первый, то 1_Boroda_