Макрос поиска и вывода строк, содержащих значение поиска - 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