Добрый день! Не могу найти проблему в коде. Работает через раз. Суть вот в чем: организован небольшой поиск через Листбокс. На Форме1 - заполнение всех данных. На Форме2 - возможность более быстрого поиска. При выборе на Форме2 - переход на Форму1 и выделение соответствующей строки.
Добрый день! Не могу найти проблему в коде. Работает через раз. Суть вот в чем: организован небольшой поиск через Листбокс. На Форме1 - заполнение всех данных. На Форме2 - возможность более быстрого поиска. При выборе на Форме2 - переход на Форму1 и выделение соответствующей строки.Dмитрий
doober, Спасибо за помощь. В файле примере работает все как должно быть. Перенес в оригинал - та же песня. Почему не работает если записать в одну процедуру, например вот так: [vba]
Код
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'lr1 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row Dim R As Integer ', wr As Integer
R = ListBox1.List(ListBox1.ListIndex, 0)
For n = 0 To UserForm1.ListBox1.ListCount - 1 If Val(UserForm1.ListBox1.List(n, 3)) = R Then UserForm1.ListBox1.Selected(n) = True End If
Next 'UserForm1.Calc R UserForm2.Hide
End Sub
[/vba]
doober, Спасибо за помощь. В файле примере работает все как должно быть. Перенес в оригинал - та же песня. Почему не работает если записать в одну процедуру, например вот так: [vba]
Код
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'lr1 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row Dim R As Integer ', wr As Integer
R = ListBox1.List(ListBox1.ListIndex, 0)
For n = 0 To UserForm1.ListBox1.ListCount - 1 If Val(UserForm1.ListBox1.List(n, 3)) = R Then UserForm1.ListBox1.Selected(n) = True End If
а почему не реализовать поиск прямо в этой форме? добавляете текстбокс на форму и дописываете эвент
Например: [vba]
Код
Private Sub TextBox1_Change()
Dim SText As String 'текст для поиска Dim LText As String 'текст в котором ищем Dim RowCount As Long ' кол-во строк в листбоксе Dim ColCount As Long 'кол-во колонов к листбоксе Dim Ci, Cj 'счетчики
RowCount = ListBox1.ListCount ColCount = ListBox1.ColumnCount SText = CStr(TextBox1.Value) For Ci = 0 To RowCount - 1 For Cj = 1 To ColCount - 1 LText = CStr(ListBox1.List(Ci, Cj)) If InStr(1, LText, SText, 1) Then ListBox1.ListIndex = Ci Exit Sub End If Next Cj Next Ci End Sub
[/vba]
а почему не реализовать поиск прямо в этой форме? добавляете текстбокс на форму и дописываете эвент
Например: [vba]
Код
Private Sub TextBox1_Change()
Dim SText As String 'текст для поиска Dim LText As String 'текст в котором ищем Dim RowCount As Long ' кол-во строк в листбоксе Dim ColCount As Long 'кол-во колонов к листбоксе Dim Ci, Cj 'счетчики
RowCount = ListBox1.ListCount ColCount = ListBox1.ColumnCount SText = CStr(TextBox1.Value) For Ci = 0 To RowCount - 1 For Cj = 1 To ColCount - 1 LText = CStr(ListBox1.List(Ci, Cj)) If InStr(1, LText, SText, 1) Then ListBox1.ListIndex = Ci Exit Sub End If Next Cj Next Ci End Sub
Не поверите, но на этой форме попросту уже нет места. Да и не все там так просто. Я представил лишь 10 часть. Второй формой, гораздо нагляднее, короче, без нее НИКАК. Очень жаль, казалось, вопрос то не сложный, но...
Не поверите, но на этой форме попросту уже нет места. Да и не все там так просто. Я представил лишь 10 часть. Второй формой, гораздо нагляднее, короче, без нее НИКАК. Очень жаль, казалось, вопрос то не сложный, но... Dмитрий
Всем спасибо. С задержкой работает. Без нее - нет. Каким боком она влияет, непонятно. Может кто-нибудь объяснить??? Так все в норме. Тему можем закрывать. Может дело совсем не в задержке, а в чем то еще???
Всем спасибо. С задержкой работает. Без нее - нет. Каким боком она влияет, непонятно. Может кто-нибудь объяснить??? Так все в норме. Тему можем закрывать. Может дело совсем не в задержке, а в чем то еще???Dмитрий
Сообщение отредактировал Dмитрий - Понедельник, 07.07.2014, 22:35
Если вы вторую форму переместите вправо,то все будет работать. Двойной клик в форме 2,она прячется,ваша мышка на первом листбоксе,вы по инерции еще кликаете по первому листбоксу
Если вы вторую форму переместите вправо,то все будет работать. Двойной клик в форме 2,она прячется,ваша мышка на первом листбоксе,вы по инерции еще кликаете по первому листбоксуdoober
Сообщение отредактировал doober - Понедельник, 07.07.2014, 23:59
millik, А не подскажите, как реализовать этот поиск с поиском следующего значения? Т.е например: 2 столбца: 1. Город, 2. Рейс автобуса. В Москву идет несколько рейсов. При использовании Вашего поиска на форме находит только первое совпадение "Москва" - рейс 21, Нужно найти второе "Москва" - рейс 122... Можно ли это как-то реализовать? Ну например кнопку добавить "Искать далее" и т.п.
Заранее благодарен!
millik, А не подскажите, как реализовать этот поиск с поиском следующего значения? Т.е например: 2 столбца: 1. Город, 2. Рейс автобуса. В Москву идет несколько рейсов. При использовании Вашего поиска на форме находит только первое совпадение "Москва" - рейс 21, Нужно найти второе "Москва" - рейс 122... Можно ли это как-то реализовать? Ну например кнопку добавить "Искать далее" и т.п.
parovoznik, Вот файлик! Только вместо городов там ФИО, № кабинета и № телефона! В поиске вбиваю фамилию "Второй" он находит только 2-ю строку! Можно ли добавить кнопку "Искать далее" - чтоб выделилась 4-я с этой фамилией, опять нажимаем "Искать далее" - выделяется следующая строка с этой фамилией и т.д.?
Огромное спасибо!
parovoznik, Вот файлик! Только вместо городов там ФИО, № кабинета и № телефона! В поиске вбиваю фамилию "Второй" он находит только 2-ю строку! Можно ли добавить кнопку "Искать далее" - чтоб выделилась 4-я с этой фамилией, опять нажимаем "Искать далее" - выделяется следующая строка с этой фамилией и т.д.?
Вопрос решил! Код тот же что и для поиска вставляем в кнопку "Искать далее" с добавлением переменной +1! Можно сделать даже икать вниз искать вверх! Во втором варианте: "переменная - 2" вместо "переменная + 1"
Всем спасибо за помощь и советы!
Вопрос решил! Код тот же что и для поиска вставляем в кнопку "Искать далее" с добавлением переменной +1! Можно сделать даже икать вниз искать вверх! Во втором варианте: "переменная - 2" вместо "переменная + 1"