Макрос поиска и вывода строк, содержащих значение поиска - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть макрос для поиска значения из ячейки А1 по всему листу и копированием строк из всех листов, содержащих это значение. Но есть и проблема: макрос поиска ищет только цифровые значения из указанной ячейки. Текстовые или смешанные не находит. Если знаете как подправить, помогите плз!!! Вот код:

Решение задачи: «Макрос поиска и вывода строк, содержащих значение поиска»

textual
Листинг программы
Option Explicit
 
Sub Ïîèñê_ГўГ®_ГўГ±ГҐГµ_ГґГ*éëГ*Гµ()
Dim iShtName$, iPath$, iFileName$, firstAddress$
Dim iSheet As Worksheet, iFoundSht As Worksheet
Dim iTempWB As Workbook, iBazaWB As Workbook
Dim TextToFind As Variant, iFoundRng As Range
Dim FD As FileDialog, iLastRow&
Dim FoundAny As Boolean
 
    TextToFind = Application.InputBox("Ââåäèòå ГІГҐГЄГ±ГІ äëÿ ïîèñêГ*:", "Ïîèñê")
    If TextToFind = "" Or TextToFind = False Then Exit Sub
    TextToFind = Trim(TextToFind)
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
        .AllowMultiSelect = False
        .Title = "ÓêГ*æèòå ëþáîé ГґГ*éë Гў ГЇГ*ГЇГЄГҐ"
        .ButtonName = "ÂûáðГ*ГІГј ГЇГ*ГЇГЄГі"
        If .Show = False Then Exit Sub Else iPath = Mid(.SelectedItems(1), 1, InStrRev(.SelectedItems(1), "\"))
    End With
    Set FD = Nothing
    Workbooks.Add
    Sheets.Add.Name = "Ïîèñê"
    Set iFoundSht = ActiveSheet
    iFoundSht.Cells(1, 1) = "Èùåì: " & TextToFind
    iFoundSht.Cells(1, 1).Font.Bold = True
    With Application
        .ScreenUpdating = False
        .Calculation = xlManual
        .StatusBar = "Èä¸ò ïîèñê..."
        .ShowWindowsInTaskbar = False
        iFileName = Dir(iPath & "*.xls")
        Do While iFileName$ <> ""
            Set iTempWB = Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=False, ReadOnly:=True)
            For Each iSheet In iTempWB.Sheets
                If iSheet.FilterMode = True Then iSheet.ShowAllData
                Set iFoundRng = iSheet.Cells.Find(What:=TextToFind, LookIn:=xlFormulas, LookAt:=xlPart)
                If Not iFoundRng Is Nothing Then
                    FoundAny = True
                    firstAddress = iFoundRng.Address
                    Do
                        With iFoundSht
                            iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
                            If iLastRow = 1 Then iLastRow = 2
                            If iShtName <> iSheet.Name Then    'åñëè Г*îâûé ГґГ*éë
                                With .Cells(iLastRow + 2, 1)
                                    .Value = "Г”Г*éë: " & iTempWB.Name & ", Ëèñò: " & iSheet.Name
                                    .Font.Bold = True
                                End With
                            End If
                            iFoundRng.EntireRow.Copy Destination:=.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)    'êîïèðóåì ГўГ±Гѕ ñòðîêó
                            iShtName = iSheet.Name
                        End With
                        Set iFoundRng = iSheet.Cells.FindNext(iFoundRng)
                    Loop While iFoundRng.Address <> firstAddress
                Else
                End If
            Next
            iTempWB.Close SaveChanges:=False
            iFileName = Dir
        Loop
        .StatusBar = False
        .ShowWindowsInTaskbar = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
    If FoundAny = False Then
        MsgBox "Г’ГҐГЄГ±ГІ '" & TextToFind & "' Г*ГЁ Гў îäГ*îì ГЁГ§ ГґГ*éëîâ Гў ГЇГ*ГЇГЄГҐ:" & Chr(10) & iPath & Chr(10) & " Г*ГҐ áûë Г*Г*éäåГ*!", 48, "ГЋГІГ·ВёГІ"
        iFoundSht.Parent.Close SaveChanges:=False
        Exit Sub
    End If
    MsgBox "Ïîèñê " & TextToFind & " Г§Г*âåðø¸Г*!", 64, "Ïîèñê"
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы