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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос выпадающего списка с полем для заполнения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос выпадающего списка с полем для заполнения (Макросы/Sub)
Макрос выпадающего списка с полем для заполнения
walkinghome Дата: Среда, 06.01.2021, 16:48 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток и с новым годом!

Нашел неплохой макрос, позволяющий проводить поиск по введенным буквам запроса (в данном случае улиц, см. Пример1) и выбору подходящего из выпадающего списка снизу. Сам макрос работает хорошо, однако часто вылезает ошибка "Индекс вне заданного диапазона" или "Subscript out of range". Данное можно увидеть, например нажав на уже заполненную макросом ячейку C3 на листе Otchet. Не подскажете в чем состоит причина ошибки и возможно ли её точечно исправить? Либо же проще написать весь код с нуля?

Небольшое замечание, но тем не менее: данный макрос не позволяет вернуть уже проведенные действия (словом, функция Ctrl+Z всегда недоступна). Не подскажете что может являться причиной данной ошибки?

Буду благодарен за любое содействие, спасибо.
К сообщению приложен файл: 6632101.xlsm(37.2 Kb)


Выражение - вооружение
 
Ответить
СообщениеДоброго времени суток и с новым годом!

Нашел неплохой макрос, позволяющий проводить поиск по введенным буквам запроса (в данном случае улиц, см. Пример1) и выбору подходящего из выпадающего списка снизу. Сам макрос работает хорошо, однако часто вылезает ошибка "Индекс вне заданного диапазона" или "Subscript out of range". Данное можно увидеть, например нажав на уже заполненную макросом ячейку C3 на листе Otchet. Не подскажете в чем состоит причина ошибки и возможно ли её точечно исправить? Либо же проще написать весь код с нуля?

Небольшое замечание, но тем не менее: данный макрос не позволяет вернуть уже проведенные действия (словом, функция Ctrl+Z всегда недоступна). Не подскажете что может являться причиной данной ошибки?

Буду благодарен за любое содействие, спасибо.

Автор - walkinghome
Дата добавления - 06.01.2021 в 16:48
RAN Дата: Среда, 06.01.2021, 19:18 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5431
Репутация: 1084 ±
Замечаний: 0% ±

2010
данный макрос не позволяет вернуть уже проведенные действия (словом, функция Ctrl+Z всегда недоступна). Не подскажете что может являться причиной данной ошибки?

Причина в том, что никакой ошибки нет. Макрос (любой) и "функция Ctrl+Z", вещи не совместимые.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
данный макрос не позволяет вернуть уже проведенные действия (словом, функция Ctrl+Z всегда недоступна). Не подскажете что может являться причиной данной ошибки?

Причина в том, что никакой ошибки нет. Макрос (любой) и "функция Ctrl+Z", вещи не совместимые.

Автор - RAN
Дата добавления - 06.01.2021 в 19:18
MikeVol Дата: Четверг, 07.01.2021, 01:13 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 117
Репутация: 14 ±
Замечаний: 0% ±

Excel 2019
walkinghome, Попробуйте изменить:
[vba]
Код

Sub GetArray()

    'взяли данные в массив
    With Sheets("Baza")
        aSpisok = .Range("$A$2:$A$30" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    End With

End Sub
[/vba]
У меня ошибка не выскакивает больше.

UPD: Не помогло, всё же выскакивает ошибка. Извините.


Сообщение отредактировал MikeVol - Четверг, 07.01.2021, 01:35
 
Ответить
Сообщениеwalkinghome, Попробуйте изменить:
[vba]
Код

Sub GetArray()

    'взяли данные в массив
    With Sheets("Baza")
        aSpisok = .Range("$A$2:$A$30" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    End With

End Sub
[/vba]
У меня ошибка не выскакивает больше.

UPD: Не помогло, всё же выскакивает ошибка. Извините.

Автор - MikeVol
Дата добавления - 07.01.2021 в 01:13
Pelena Дата: Четверг, 07.01.2021, 13:38 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 17631
Репутация: 3926 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
walkinghome, есть похожее готовое решение, неоднократно проверенное


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

Автор - Pelena
Дата добавления - 07.01.2021 в 13:38
RAN Дата: Четверг, 07.01.2021, 14:13 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5431
Репутация: 1084 ±
Замечаний: 0% ±

2010
Дык и этот код рабочий.
Все дело в том, что сначала идет запись данных, и только потом получение этих данных (GetArray). И, при определенных условиях, aSpisok пустой. Что и дает ошибку. Достаточно передвинуть GetArray в начало.
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ListBox1.Visible = False
If Target.Count > 1 Then Exit Sub
    If Not Intersect(ActiveCell, Range("C3:C8")) Is Nothing Then
                 GetArray
           With TextBox1
                .Value = Empty
                If Target <> "" Then .Value = Target
                .Top = ActiveCell.Top
                .Width = ActiveCell.Width
                .Left = ActiveCell.Left
                .Height = ActiveCell.Height + 2
                .Font.Size = ActiveCell.Font.Size
                .Visible = True
                .Activate
            End With
    Else: TextBox1.Visible = False: ListBox1.Visible = False
    End If

End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДык и этот код рабочий.
Все дело в том, что сначала идет запись данных, и только потом получение этих данных (GetArray). И, при определенных условиях, aSpisok пустой. Что и дает ошибку. Достаточно передвинуть GetArray в начало.
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ListBox1.Visible = False
If Target.Count > 1 Then Exit Sub
    If Not Intersect(ActiveCell, Range("C3:C8")) Is Nothing Then
                 GetArray
           With TextBox1
                .Value = Empty
                If Target <> "" Then .Value = Target
                .Top = ActiveCell.Top
                .Width = ActiveCell.Width
                .Left = ActiveCell.Left
                .Height = ActiveCell.Height + 2
                .Font.Size = ActiveCell.Font.Size
                .Visible = True
                .Activate
            End With
    Else: TextBox1.Visible = False: ListBox1.Visible = False
    End If

End Sub
[/vba]

Автор - RAN
Дата добавления - 07.01.2021 в 14:13
walkinghome Дата: Пятница, 08.01.2021, 12:48 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, спасибо за помощь!


Выражение - вооружение
 
Ответить
СообщениеRAN, спасибо за помощь!

Автор - walkinghome
Дата добавления - 08.01.2021 в 12:48
Alex_ST Дата: Суббота, 09.01.2021, 16:06 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3130
Репутация: 592 ±
Замечаний: 0% ±

2003
в топике "Удобный автофильтр" есть несколько вариантов решения



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениев топике "Удобный автофильтр" есть несколько вариантов решения

Автор - Alex_ST
Дата добавления - 09.01.2021 в 16:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос выпадающего списка с полем для заполнения (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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