vba цикл по листам книги



Автор Катя* задал вопрос в разделе Другие языки и технологии

Помощь в написание программы на VBA и получил лучший ответ

Ответ от ...[гуру]
А не проще из Access подцепить таблицу Excel в качестве источника данных и там уже можно фильтровать запросами хоть по имени хоть как.
На всякий случай набросал поиск. Что значит "выводит на платформу VBA" мне непонятно. В таблицу запись могу сделать, если первый вариант не устраивает.
Код 100% рабочий. Если что не получается - пишите в комментариях или на почту.
--- Поиск ---
Sub TestFind()
Dim strCompanyName As String
Dim objSheet As Worksheet
Dim objColumnName As Range
Dim objFindFirstRange As Range
Dim objFindRange As Range
'Переводим обработчик ошибок на наш
On Error GoTo errTest
'Зададим название компании
strCompanyName = "Рога и копыта"
'Цикл по листам в текущей книге
For Each objSheet In ThisWorkbook.Sheets
'Выводим в окно отладки что происходит
Debug.Print "Поиск диапазона на листе " & objSheet.Name
'Ищем на листе столбец с названием "название фирмы"
Set objColumnName = objSheet.Cells.Find("Название фирмы", , xlWhole)
'Если не находим - вызываем "исключение"
If objColumnName Is Nothing Then Err.Raise xlErrValue + 1, , "Столбец с названием фирм не найден"
'Иначе получаем столбец с указанным названием
Set objColumnName = objSheet.Columns(objColumnName.Column)
'Пишем в окно отладки что происходит
Debug.Print " Поиск фирмы " & strCompanyName & " на листе " & objSheet.Name
'Ищем первую строку с названием фирмы
Set objFindFirstRange = objColumnName.Find(strCompanyName, , xlValues, xlWhole, xlByRows, xlNext)
'Если нашли
If Not objFindFirstRange Is Nothing Then
'Устанавливаем диапазон поиска
Set objFindRange = objFindFirstRange
'Цикл поиска в столбце
Do
'Выводим в окно отладки что нашли
Debug.Print " Найдена в строке " & objFindRange.Row
'Выводим на экран (убрать если не надо)
MsgBox " Найдена в строке " & objFindRange.Row
'Ищем дальше
Set objFindRange = objColumnName.FindNext(objFindRange)
'Цикл пока поиск возможен и пока не вернёмся на первую найденную ячейку
Loop While Not objFindRange Is Nothing And objFindRange.Address <> objFindFirstRange.Address
'Конец условия
End If
'Конец цикла по листам
Next
'Выходим из процедуры
Exit Sub
'Отлавливаем ошибки
errTest:
'Сообщаем почему навернулись
MsgBox "Ошибка " & Err.Number & " " & Err.Description
End Sub

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Помощь в написание программы на VBA
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*