Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2015, 01:40   #1
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
Восклицание Поиск текста в range (VBA)

Имеется список профессий и их код (2 колонки). Надо с помощью кнопки на форме выполнить поиск введённого текста в первой колонке и вывести все значения из второй (название профессии может повторяться в нескольких строчках, но код разный).

Пока я могу находить только одну первую профессию посредством кода:
Код:
Private Sub FindMishlahButton_Click()
Dim FindString As Integer
Dim FindString2 As String
Dim Rng As Range

FindString = 1
FindString2 = professia.Value
Worksheets("Profession").Range("f1").Value = FindString2
If Trim(FindString) <> "" Then
    With Sheets("Profession").Range("f3:f667")
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Me.MishlahLabel.Caption = Rng.Offset(rowOffset:=0, columnOffset:=1).Value
            Me.ProfessionTable.Caption = Rng.Offset(rowOffset:=0, columnOffset:=-1).Value
        Else
            Me.MishlahLabel.Caption = "Not"
            Me.ProfessionTable.Caption = ""
        End If
    End With
End If
Worksheets("Profession").Range("f1").Value = ""
End Sub
yurkagagarin вне форума Ответить с цитированием
Старый 12.02.2015, 02:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код переделать несложно, - только непонятно, в каком виде вывести сюда
Me.MishlahLabel.Caption
сразу НЕСКОЛЬКО значений
Через запятую надо? или как?

PS: если прикрепите пример файла (в архиве) - помочь будет намного проще

я бы написал макрос так: (перебор массива выполнится моментально)

Код:
Private Sub FindMishlahButton_Click()
    Dim FindString$, arr, i&, res$

    FindString$ = "текст который ищем"

    If Trim(FindString) <> "" Then
        arr = Sheets("Profession").Range("f3:f667").Value
        
        For i = LBound(arr) To UBound(arr)
            If arr(i, 1) =  FindString$ Then res$ = res$ & ", " & arr(i, 2)
        Next i
        
        res = Mid(res$, 3)

        If Len(res) > 0 Then
            Me.MishlahLabel.Caption = res$
        Else
            Me.MishlahLabel.Caption = "Not"
        End If
    End If
End Sub

Последний раз редактировалось EducatedFool; 12.02.2015 в 02:30.
EducatedFool вне форума Ответить с цитированием
Старый 13.02.2015, 16:26   #3
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
По умолчанию

Я использовал Findnext, это именно то, что мне надо. Но спасибо за ваш ответ.
yurkagagarin вне форума Ответить с цитированием
Старый 13.02.2015, 17:13   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Find/FindNext хорошо, если из миллиона нужно выбрать пару значений. А если из 10 тысяч нужно выбрать тысячу - то уже перебор массива будет заметно быстрее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита текста в VBA-проекте Vabik Microsoft Office Excel 2 28.08.2013 16:07
VBA и Oracle: stored procedure из VBA и сохранение текста в переменной Lionne Microsoft Office Excel 1 15.04.2013 19:51
Поиск текста с копированием ячеек типа ВПР но для сложного текста! Elkin_087 Microsoft Office Excel 1 24.06.2012 22:06
Сценарий на VBA (форматирование текста) mekkanizer Помощь студентам 2 15.04.2012 22:19
Поиск и номер позиции текста в VBA (Excel) Abdukhafiz Microsoft Office Excel 3 20.03.2012 13:40