Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макров зависимых ячеек не корректно работает - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макров зависимых ячеек не корректно работает (Макросы/Sub)
Макров зависимых ячеек не корректно работает
Santtic Дата: Вторник, 13.07.2021, 09:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Добрый день коллеги. Вчера Елена подсказала мне макрос зависимых выпадающих списков. Обработав таблицу я заметил некорректную его работу. А именно. При активации комбобокса, список сразу не выпадает, мне надо нажать или пробел или что то в этом комбике. Но и тут же при нажатии пробела, задваивается или затраивается значения выпадающих значений. Таких Списков у меня примерно 15 наверное, и оператору для ввода будет проблематична такая форма ввода. Подскажите пожалуйста что поправить, при условии что таких комбобоксов будет 15.
Спасибо, всем хорошего дня.

[vba]
Код
Private Sub ComboBox1_Change()

    'ComboBox3.Clear
    With CreateObject("scripting.dictionary")
        For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then  у меня активны эта строка
                If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                    .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                    ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
                End If
            'End If у меня активны эта строка
        Next i
    End With
End Sub
[/vba]

В подсказанном коде еще был один момент, который отвечает за инициализацию
[vba]
Код
Private Sub UserForm_Initialize()
    With CreateObject("scripting.dictionary")
        For i = 2 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
            End If
        Next i
    End With
End Sub
[/vba]
Но по такому принципу я не могу все комбики прописывать, такое прокатывало только с обычными выпадающими списками, там работало. как их связать, вот в чем вопрос <_<
К сообщению приложен файл: 0527073.xlsm(20.8 Kb)


Сообщение отредактировал Santtic - Вторник, 13.07.2021, 10:01
 
Ответить
СообщениеДобрый день коллеги. Вчера Елена подсказала мне макрос зависимых выпадающих списков. Обработав таблицу я заметил некорректную его работу. А именно. При активации комбобокса, список сразу не выпадает, мне надо нажать или пробел или что то в этом комбике. Но и тут же при нажатии пробела, задваивается или затраивается значения выпадающих значений. Таких Списков у меня примерно 15 наверное, и оператору для ввода будет проблематична такая форма ввода. Подскажите пожалуйста что поправить, при условии что таких комбобоксов будет 15.
Спасибо, всем хорошего дня.

[vba]
Код
Private Sub ComboBox1_Change()

    'ComboBox3.Clear
    With CreateObject("scripting.dictionary")
        For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then  у меня активны эта строка
                If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                    .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                    ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
                End If
            'End If у меня активны эта строка
        Next i
    End With
End Sub
[/vba]

В подсказанном коде еще был один момент, который отвечает за инициализацию
[vba]
Код
Private Sub UserForm_Initialize()
    With CreateObject("scripting.dictionary")
        For i = 2 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
            End If
        Next i
    End With
End Sub
[/vba]
Но по такому принципу я не могу все комбики прописывать, такое прокатывало только с обычными выпадающими списками, там работало. как их связать, вот в чем вопрос <_<

Автор - Santtic
Дата добавления - 13.07.2021 в 09:54
skais Дата: Вторник, 13.07.2021, 15:29 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Santtic, По сути не видно самой задачи или вопроса, который нужно решить. Где Ваши зависимые списки. где куча combobox? Лучше создайте пример и опишите задачу.
 
Ответить
СообщениеSanttic, По сути не видно самой задачи или вопроса, который нужно решить. Где Ваши зависимые списки. где куча combobox? Лучше создайте пример и опишите задачу.

Автор - skais
Дата добавления - 13.07.2021 в 15:29
Santtic Дата: Вторник, 13.07.2021, 16:28 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Где Ваши зависимые списки. где куча combobox?

Проблематику своего объяснения понял. Накидаю пару еще, и выложу файл).
Спасибо за интерес)
 
Ответить
Сообщение
Где Ваши зависимые списки. где куча combobox?

Проблематику своего объяснения понял. Накидаю пару еще, и выложу файл).
Спасибо за интерес)

Автор - Santtic
Дата добавления - 13.07.2021 в 16:28
Pelena Дата: Вторник, 13.07.2021, 19:20 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 17793
Репутация: 3958 ±
Замечаний: ±

Excel 2016 & Mac Excel
Елена подсказала мне макрос
подсказала ссылку на готовое решение, не моё yes


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
Елена подсказала мне макрос
подсказала ссылку на готовое решение, не моё yes

Автор - Pelena
Дата добавления - 13.07.2021 в 19:20
Santtic Дата: Вторник, 13.07.2021, 21:49 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
не моё

Да, ссылку, прошу прощения что не так выразился))
 
Ответить
Сообщение
не моё

Да, ссылку, прошу прощения что не так выразился))

Автор - Santtic
Дата добавления - 13.07.2021 в 21:49
Santtic Дата: Вторник, 13.07.2021, 22:07 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Снова всем доброго времени.
Сделал на примере трех комбиков.
Задача стоит у меня в том: что бы когда я выберу петрова Ячейка А1 (контакти), мне или автоматом или же в ручном режиме предложило выбор "Олег", после того как выберу Олег мне или предложило или в ручную выбрал только цифру 5 из ячейки С1.
Сейчас вроде все эти условия работают. Но, когда я нажимаю на комбик - перечень данных не выпадает, мне надо нажать или пробел или еще что то что бы выпал перечень. Если я нажму пробел в комбике два раза - перечень задвоится, если нажму пробел три раза перечень затроится это меня не устраивает т.к., оператор который будет пользоваться этим еще хуже разбирается в екселе чем я)) таких комбов будет штук 15, может со временем еще больше.
Что я не так делаю, подскажите пожалуйста, где я допускаю ошибку <_<
К сообщению приложен файл: 2600589.xlsm(21.0 Kb)
 
Ответить
СообщениеСнова всем доброго времени.
Сделал на примере трех комбиков.
Задача стоит у меня в том: что бы когда я выберу петрова Ячейка А1 (контакти), мне или автоматом или же в ручном режиме предложило выбор "Олег", после того как выберу Олег мне или предложило или в ручную выбрал только цифру 5 из ячейки С1.
Сейчас вроде все эти условия работают. Но, когда я нажимаю на комбик - перечень данных не выпадает, мне надо нажать или пробел или еще что то что бы выпал перечень. Если я нажму пробел в комбике два раза - перечень задвоится, если нажму пробел три раза перечень затроится это меня не устраивает т.к., оператор который будет пользоваться этим еще хуже разбирается в екселе чем я)) таких комбов будет штук 15, может со временем еще больше.
Что я не так делаю, подскажите пожалуйста, где я допускаю ошибку <_<

Автор - Santtic
Дата добавления - 13.07.2021 в 22:07
mgt Дата: Среда, 14.07.2021, 11:55 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 3 ±
Замечаний: 0% ±

Excel 2010
Трижды перечитал, но так и не понял зачем выбирать "Олег" и "5" если они находятся в одной строке и так понятны их значения. Может быть на тот случай если Петровых несколько? Да и в приведенном примере не вижу как вы наполняете комбобокс. Если дублируются значения в комбобоксе, то перед его наполнением попробуйте добавить строку:
[vba]
Код
Combobox2.clear
[/vba]


Сообщение отредактировал mgt - Среда, 14.07.2021, 11:56
 
Ответить
СообщениеТрижды перечитал, но так и не понял зачем выбирать "Олег" и "5" если они находятся в одной строке и так понятны их значения. Может быть на тот случай если Петровых несколько? Да и в приведенном примере не вижу как вы наполняете комбобокс. Если дублируются значения в комбобоксе, то перед его наполнением попробуйте добавить строку:
[vba]
Код
Combobox2.clear
[/vba]

Автор - mgt
Дата добавления - 14.07.2021 в 11:55
Santtic Дата: Среда, 14.07.2021, 12:02 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
не понял зачем выбирать "Олег" и "5"

Будут уникальные значения, относительно которых будет формироваться отчет. Данные раскиданы в разных диапазонах, а диапазон в свою очередь сталый.
Сейчас попробую вашу подсказку. Спасибо.
 
Ответить
Сообщение
не понял зачем выбирать "Олег" и "5"

Будут уникальные значения, относительно которых будет формироваться отчет. Данные раскиданы в разных диапазонах, а диапазон в свою очередь сталый.
Сейчас попробую вашу подсказку. Спасибо.

Автор - Santtic
Дата добавления - 14.07.2021 в 12:02
Santtic Дата: Среда, 14.07.2021, 13:33 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Попробовал, ничего не вышло, он тогда очищает комбобокс и ничего не введешь.
Инициализацию прописал, но только на Combobox1, второй ка подтягивался через пробол так и подтягивается. Задвоение значений в кобиках так же осталось <_<
К сообщению приложен файл: 2634801.xlsm(25.3 Kb)
 
Ответить
СообщениеПопробовал, ничего не вышло, он тогда очищает комбобокс и ничего не введешь.
Инициализацию прописал, но только на Combobox1, второй ка подтягивался через пробол так и подтягивается. Задвоение значений в кобиках так же осталось <_<

Автор - Santtic
Дата добавления - 14.07.2021 в 13:33
Santtic Дата: Среда, 14.07.2021, 23:15 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Нашел причину задваивания данных но не решение. Причина возникает когда я начинаю строить зависимые выпадающие списки с друго го листа. Т.Е. данные сейчас собираются с двух листов, и отсюда начинается вся пляска.
Кто может подсказать как
[vba]
Код
Private Sub ComboBox1_Change()

    'ComboBox3.Clear
    With CreateObject("scripting.dictionary")
        For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then  у меня активны эта строка
                If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                    .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                    ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
                End If
            'End If у меня активны эта строка
        Next i
    End With
End Sub
[/vba]
прописать что бы данные тянуло со второго листа без задваивания, название листа естественно изменил)
Как провести инициализацию формы для двух листов. Первых три комбобокса работают с одни листом, в следующие со вторым. Из за того что я прописываю второй лист с указанием привязки к предыдущему комбобоксу, я получаю задваивание данных <_<


Сообщение отредактировал Santtic - Четверг, 15.07.2021, 08:10
 
Ответить
СообщениеНашел причину задваивания данных но не решение. Причина возникает когда я начинаю строить зависимые выпадающие списки с друго го листа. Т.Е. данные сейчас собираются с двух листов, и отсюда начинается вся пляска.
Кто может подсказать как
[vba]
Код
Private Sub ComboBox1_Change()

    'ComboBox3.Clear
    With CreateObject("scripting.dictionary")
        For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row
            'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then  у меня активны эта строка
                If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then
                    .Add Trim(Worksheets("Контакти").Cells(i, 1)), i
                    ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value
                End If
            'End If у меня активны эта строка
        Next i
    End With
End Sub
[/vba]
прописать что бы данные тянуло со второго листа без задваивания, название листа естественно изменил)
Как провести инициализацию формы для двух листов. Первых три комбобокса работают с одни листом, в следующие со вторым. Из за того что я прописываю второй лист с указанием привязки к предыдущему комбобоксу, я получаю задваивание данных <_<

Автор - Santtic
Дата добавления - 14.07.2021 в 23:15
mgt Дата: Пятница, 16.07.2021, 14:15 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 3 ±
Замечаний: 0% ±

Excel 2010
Данные у вас задваиваются потому что вы на событие ComboBox1_Change выполняете ComboBox1.AddItem.
 
Ответить
СообщениеДанные у вас задваиваются потому что вы на событие ComboBox1_Change выполняете ComboBox1.AddItem.

Автор - mgt
Дата добавления - 16.07.2021 в 14:15
Santtic Дата: Понедельник, 26.07.2021, 10:57 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
Данные у вас задваиваются потому что вы

Да спасибо, разобрался. правда другим методом решил вопрос.
 
Ответить
Сообщение
Данные у вас задваиваются потому что вы

Да спасибо, разобрался. правда другим методом решил вопрос.

Автор - Santtic
Дата добавления - 26.07.2021 в 10:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макров зависимых ячеек не корректно работает (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования Jobsora jooble
© 2010-2021 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!