Страницы: 1
RSS
Макрос. Поиск по столбцу изменить на поиск по листу
 
Подскажите. В файле есть макрос СписокПоиск
Он ищет только по столбцу Е. Как я могу сделать так, чтобы он искал либо по другому столбцу, либо по всему листу?
Код
Sub СписокПоиск()
    ufrmПоиск.Show (0)
End Sub
Sub isk()
  ST = Selection.Row + 1
  If Len(Range("E1").Value) = 1 Then
    For i = ST To Cells(Rows.Count, 5).End(xlUp).Row
        If UCase(Left(Cells(i, 5), 1)) = UCase(Range("E1").Value) Then
           Cells(i, 5).Select
           Exit Sub
        End If
    Next i
  End If
  If Len(Range("E1").Value) > 1 Then
    For i = ST To Cells(Rows.Count, 5).End(xlUp).Row
        If InStr(1, UCase(Cells(i, 5)), UCase(Range("E1").Value)) > 0 Then
           Cells(i, 5).Select
           Exit Sub
        End If
    Next i
  End If
End Sub
Изменено: panchous - 17.07.2019 19:08:01
 
panchous, код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
 
Цитата
panchous написал:
Как я могу сделать так, чтобы он искал либо по другому столбцу, либо по всему листу?
Так что нужно - по другому столбцу или по всему листу?
 
По другому столбцу, чтобы я понял, что менять в коде, чтобы поиск шёл по нужному мне столбцу
 
Цитата
panchous написал:
Юрий М  написал:Так что нужно - по другому столбцу или по всему листу?По другому столбцу, чтобы я понял, что менять в коде, чтобы поиск шёл по нужному мне столбц
А если предложите решение, чтобы поиск шёл еще и по листу, это мне очень поможет. Еще прикрепляю похожий макрос, я не могу посмотреть в нем код - он спрятан за кнопкой
 
Замените тогда в показанном коде "пятёрку" на номер нужного столбца,
 
Цитата
Юрий М написал:
Замените тогда в показанном коде "пятёрку" на номер нужного столбца,
Спасибо, но это не помогает. Нажимаю кнопку найти из формы - поиск идет только по столбцу "Е"
 
Цитата
Юрий М написал:
Замените тогда в показанном коде
Показанный в стартовом сообщении  код (isk) не из модуля формы.
Заменил везде (ВЕЗДЕ!) в модуле формы 5 на 10 - ищет и находит в столбце J.
 
Цитата
Юрий М написал:
Показанный в стартовом сообщении  код (isk) не из модуля формы.Заменил везде (ВЕЗДЕ!) в модуле формы 5 на 10 - ищет и находит в столбце J.
Спасибо, это мне помогло. Я смотрел макрос, теперь понял, что нужно было смотреть модуль формы.

А возможно в этот код вставить диапазон, чтобы поиск был по всему листу?
 
Цитата
panchous написал:
А возможно в этот код вставить диапазон, чтобы поиск был по всему листу?
Указанный диапазон и весь лист - это разные вещи.
Можно и по диапазону, но код будет другой.
 
Цитата
Юрий М написал:
Указанный диапазон и весь лист - это разные вещи.Можно и по диапазону, но код будет другой.
Понял, тогда я не так выразился. Меня интересует весь лист
 
Цитата
Юрий М написал:
код будет другой
Нет смысла искать по всему листу: достаточно смотреть используемый диапазон - Used Range.
Но в этом случае недостаточно будет в первый столбец ЛистБокса записывать только номер строки: придётся писать адрес ячейки.
 
Цитата
Юрий М написал:
Нет смысла искать по всему листу: достаточно смотреть используемый диапазон - Used Range.Но в этом случае недостаточно будет в первый столбец ЛистБокса записывать только номер строки: придётся писать адрес ячейки.
Не понимаю где его смотреть, в коде формы нет строки Used Range
 
У меня есть кнопка с формой, где поиск проходит по всему листу. Но поиск идёт только по первому слову - это мне не подходит.

Мне нужно из этой формы перенести код поиска по всему листу во второй код.

Либо из второго кода перенести часть, отвечающую за поиск по всем словам в первый код.
Код
Option Explicit
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
    Dim j As Long, i As Long, poisk As Range, iAdr$, LT%
    ListBox1.Clear
    LT = Len(TextBox1.Value)
    If LT = 0 Then Exit Sub
    j = 0
    iAdr = ActiveSheet.UsedRange.Address
    iAdr = Mid(iAdr, InStr(iAdr, ":") + 1)
    For Each poisk In ActiveSheet.Range("A1:" & iAdr)
    If UCase(Left(poisk, LT)) = UCase(TextBox1.Value) Then
        ListBox1.AddItem poisk.Address
        ListBox1.List(j, 1) = poisk
        j = j + 1
    End If
    Next
End Sub
Private Sub ListBox1_Click()
    If ListBox1.ListIndex = -1 Then Exit Sub
    Range(ListBox1).Select
End Sub
Private Sub UserForm_Click()

End Sub
 
Цитата
panchous написал:
поиск идёт только по первому слову - это мне не подходит.
Как это понимать?
Цитата
panchous написал:
поиск по всем словам
А это как? Беда у Вас с формулировками...
 
panchous, вернитесь, приведите все свои сообщения в порядок. Не нужно тупо жать на кнопку цитирования, она НЕ ДЛЯ КОПИРОВАНИЯ СООБЩЕНИЙ!
 
panchous, устраните замечание модератора. После этого я покажу файл с новым кодом.
 
Цитата
Юрий М написал: покажу файл с новым годом
Покажешь 1 января? :)
 
Исправил. Прямо, как Т9 :)
Страницы: 1
Наверх