Макрос поиска и вывода строк, содержащих значение поиска - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д