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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макров зависимых ячеек не корректно работает (Макросы/Sub)
Макров зависимых ячеек не корректно работает
Santtic Дата: Вторник, 13.07.2021, 09:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

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

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

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

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

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

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

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


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

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

Excel 2016
не моё

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

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

Автор - Santtic
Дата добавления - 13.07.2021 в 21:49
Santtic Дата: Вторник, 13.07.2021, 22:07 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 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
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 1 ±
Замечаний: 0% ±

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

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

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

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

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

Автор - Santtic
Дата добавления - 14.07.2021 в 13:33
Santtic Дата: Среда, 14.07.2021, 23:15 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 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
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 0% ±

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

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

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

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

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

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

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