Сделал выпадающий список с целью выбора определенных данных из ячеек диапазона А2:А7 вручную и автоматически. Ячейку А2 сделал зависимой от С1 для автоматического изменения А1 при выборе из списка значения А2 и динамическом изменении значения С1. НО осталось одно но: не меняется А1 вслед за С1, изменяется только А2. Приходится вручную снова выбирать изменившееся значение А2 или прямо в А1 прописать формулу "=С1", которая слетает после выбора другого значения из списка. Очень неудобно. Подскажите, что нужно подправить, плис! Формулой/другими способами. :angel: [color=black][font=Times]
Сделал выпадающий список с целью выбора определенных данных из ячеек диапазона А2:А7 вручную и автоматически. Ячейку А2 сделал зависимой от С1 для автоматического изменения А1 при выборе из списка значения А2 и динамическом изменении значения С1. НО осталось одно но: не меняется А1 вслед за С1, изменяется только А2. Приходится вручную снова выбирать изменившееся значение А2 или прямо в А1 прописать формулу "=С1", которая слетает после выбора другого значения из списка. Очень неудобно. Подскажите, что нужно подправить, плис! Формулой/другими способами. :angel: [color=black][font=Times]котов
Private Sub Worksheet_Change(ByVal Target As Range) 'при именении A2 запишет ее значение в A1 If Not Intersect(Target, Range("a2")) Is Nothing Then [a1] = [a2].Value End If 'при именении C1 запишет ее значение в A1 If Not Intersect(Target, Range("c1")) Is Nothing Then [a1] = [c1].Value End If End Sub
[/vba]нифига не понял, но вдруг правильно
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) 'при именении A2 запишет ее значение в A1 If Not Intersect(Target, Range("a2")) Is Nothing Then [a1] = [a2].Value End If 'при именении C1 запишет ее значение в A1 If Not Intersect(Target, Range("c1")) Is Nothing Then [a1] = [c1].Value End If End Sub
Nic70y, Файл полурабочий. При изменении С1 меняется А1, но в А2 почему-то остается прежней. Теперь при изменении С1 она всегда меняет А1, даже если из раскрывающегося списка выбрана другая ячейка. Не А2, как задумывалось. Нужно это для возможности работать со списком как вручную, выбирая из него постоянные значения, так и автоматически (выбрав из списка зависимую от С1 ячейку А2). Ручной режим и автомат должен выбирать пользователь. Все должно быть очень просто, как и все гениальное.
Nic70y, Файл полурабочий. При изменении С1 меняется А1, но в А2 почему-то остается прежней. Теперь при изменении С1 она всегда меняет А1, даже если из раскрывающегося списка выбрана другая ячейка. Не А2, как задумывалось. Нужно это для возможности работать со списком как вручную, выбирая из него постоянные значения, так и автоматически (выбрав из списка зависимую от С1 ячейку А2). Ручной режим и автомат должен выбирать пользователь. Все должно быть очень просто, как и все гениальное.котов
Manyasha, Nic70y, Здравствуйте. Описываю подробно: После добавления строчки при каждом новом значении зависимой ячейки А2 оно отображается и в списке, и в А1. В авторежиме работает. Переходим в ручной режим. Выбираем для отображения в А1 любую независимую ячейку из списка (А3:А6) с фиксированным значением. Работает только пока зависимая ячейка А2 имеет неизменное значение. С момента изменения значения А2 ручной режим не работает. В А1 происходит подмена выбранного вручную значения из А3:А6 на новое значение зависимой А2, что недопустимо. Всего-то и нужно убрать этот недостаток. При необходимости режимы (ячейки для отображения их значений в А1) должен заменять сам пользователь. Кратко: Manyasha, А1 не должна менять значения одних ячеек из списка на значения других. Если пользователь выбрал для отображения в А1 значение А2, то в ней должны отображаться все значения, которые появляются в зависимой ячейке А2.Работает. Если он выбрал независимую ( например, А3) – отображать значение этой ячейки до тех пор, пока он не выберет любую другую ячейку. Не работает. Предпочтительней решить формулами. Может есть недокументированная формула в Эксэль. Его делали умные люди, должны были предусмотреть простую формулу для решения этой простой задачи. Макросами - когда можно только с их помощью.
Manyasha, Nic70y, Здравствуйте. Описываю подробно: После добавления строчки при каждом новом значении зависимой ячейки А2 оно отображается и в списке, и в А1. В авторежиме работает. Переходим в ручной режим. Выбираем для отображения в А1 любую независимую ячейку из списка (А3:А6) с фиксированным значением. Работает только пока зависимая ячейка А2 имеет неизменное значение. С момента изменения значения А2 ручной режим не работает. В А1 происходит подмена выбранного вручную значения из А3:А6 на новое значение зависимой А2, что недопустимо. Всего-то и нужно убрать этот недостаток. При необходимости режимы (ячейки для отображения их значений в А1) должен заменять сам пользователь. Кратко: Manyasha, А1 не должна менять значения одних ячеек из списка на значения других. Если пользователь выбрал для отображения в А1 значение А2, то в ней должны отображаться все значения, которые появляются в зависимой ячейке А2.Работает. Если он выбрал независимую ( например, А3) – отображать значение этой ячейки до тех пор, пока он не выберет любую другую ячейку. Не работает. Предпочтительней решить формулами. Может есть недокументированная формула в Эксэль. Его делали умные люди, должны были предусмотреть простую формулу для решения этой простой задачи. Макросами - когда можно только с их помощью.котов
котов, вам можно завести, например, OLE-объект ComboBox или ListBox, и выбирать "автоматически" оттуда. А "вручную", естественно, из имеющегося списка. Как в примере. А данные для автосписка можно либо отбирать в отдельный список вручную, либо вот именно здесь и применить VBA, чтобы "автозначения" отбирались в отдельный список кодом и подключались как источник для list/combo.
котов, вам можно завести, например, OLE-объект ComboBox или ListBox, и выбирать "автоматически" оттуда. А "вручную", естественно, из имеющегося списка. Как в примере. А данные для автосписка можно либо отбирать в отдельный список вручную, либо вот именно здесь и применить VBA, чтобы "автозначения" отбирались в отдельный список кодом и подключались как источник для list/combo.AndreTM
Вам надо пополняемый (динамический) список или что?
Пополняемым список можно сделать потом. Сейчас нужен обычный выпадающий список с небольшой доработкой. Осталось только сделать так, чтобы в ячейке А1 отображались значения тех ячеек из раскрывающегося списка, которые выбрал пользователь. В первоначальном варианте файла в А1 не записывалось новое значение А2. После предложенной Вами и Manyasha доработки записываются (отображаются) все значения из списка, но сохраняются в А1 только до изменения значения А2. Если в А2 планируется отображать быстро меняющееся значение, она будет постоянно отображать его в А1. Даже тогда, когда из списка я выберу не А2, а, например А4. Снова выбирать значение из А4 не очень удобно. Файл приложил. В нем в А1 выбрано значение А4 равное 25. Если в С1, равное А2 внести 5, после "Enter" А1 изменится на 5. Должно оставаться 25 пока я из списка не выберу значение ячейки А2. Тогда и должна А1 отобразить 5.
Вам надо пополняемый (динамический) список или что?
Пополняемым список можно сделать потом. Сейчас нужен обычный выпадающий список с небольшой доработкой. Осталось только сделать так, чтобы в ячейке А1 отображались значения тех ячеек из раскрывающегося списка, которые выбрал пользователь. В первоначальном варианте файла в А1 не записывалось новое значение А2. После предложенной Вами и Manyasha доработки записываются (отображаются) все значения из списка, но сохраняются в А1 только до изменения значения А2. Если в А2 планируется отображать быстро меняющееся значение, она будет постоянно отображать его в А1. Даже тогда, когда из списка я выберу не А2, а, например А4. Снова выбирать значение из А4 не очень удобно. Файл приложил. В нем в А1 выбрано значение А4 равное 25. Если в С1, равное А2 внести 5, после "Enter" А1 изменится на 5. Должно оставаться 25 пока я из списка не выберу значение ячейки А2. Тогда и должна А1 отобразить 5.котов
AndreTM, Нужен только один выпадающий список. Он будет составной частью утвержденной формы таблицы расчетов, где не должно быть ничего лишнего. Осталось победить "нежелание" ячейки А1 стабильно отображать те данные, которые находятся в выбранной пользователем ячейке из раскрывающегося списка. Без макроса А1 никак не реагирует на изменившееся значение ячейки А2 из списка.(значение А2 меняем через С1). Приходится руками снова для А1 выбирать А2 с новым значением. См.1726324.xls С предложенным макросом реагирует на изменившееся значение А2, не только когда надо, но и когда не надо. Например, когда пользователь выбрал совсем другую ячейку из списка для отображения её значения в А1. См.2590094.xls Экселисты-разработчики должны были дать возможность этот вопрос решить.
AndreTM, Нужен только один выпадающий список. Он будет составной частью утвержденной формы таблицы расчетов, где не должно быть ничего лишнего. Осталось победить "нежелание" ячейки А1 стабильно отображать те данные, которые находятся в выбранной пользователем ячейке из раскрывающегося списка. Без макроса А1 никак не реагирует на изменившееся значение ячейки А2 из списка.(значение А2 меняем через С1). Приходится руками снова для А1 выбирать А2 с новым значением. См.1726324.xls С предложенным макросом реагирует на изменившееся значение А2, не только когда надо, но и когда не надо. Например, когда пользователь выбрал совсем другую ячейку из списка для отображения её значения в А1. См.2590094.xls Экселисты-разработчики должны были дать возможность этот вопрос решить.котов
Экселисты-разработчики должны были дать возможность
Ничего они не должны вашим конкретным хотелкам Это вы усложняете вопрос неверной постановкой задачи. Если есть уже известный список значений - так и используйте его. Если без макросов хотите - так поместите список "куда-нибудь в отдельное место", хоть даже в именованные диапазоны/формулы, и привяжите его как источник для "проверки данных" или любого встраиваемого объекта-списка...
Экселисты-разработчики должны были дать возможность
Ничего они не должны вашим конкретным хотелкам Это вы усложняете вопрос неверной постановкой задачи. Если есть уже известный список значений - так и используйте его. Если без макросов хотите - так поместите список "куда-нибудь в отдельное место", хоть даже в именованные диапазоны/формулы, и привяжите его как источник для "проверки данных" или любого встраиваемого объекта-списка...AndreTM