по 1-ой вашей идеи - "поиск проводится по таблицам с одинаковой структурой":
можно объединить таблицы в один запрос UNION (AllTab) и искать в этом запросе
что то типа этого
SELECT 'Таб1' As [Где найдено], Таб1.*
FROM Таб1
UNION ALL
SELECT 'Таб2' As [Где найдено], Таб2.*
FROM Таб2
в коде формировать динамически запрос к AllTab
strSQL = "SELECT * FROM AllTab WHERE " & [Поле по которому поиск].Value & " = " & [Значение которое ищем].Value
Me.RecordSource = strSQL
как-то так
а вот по поводу 2-й,
"по второй по таблица с разными, но поля одни и те же по своей идее"
(тут какая-то бредятина написана - будем считать - что структура - разная)то не понятно - в каком виде вы хотите получить результат?
если поле "Фамилия" с "Иванов" - найдено в таб. с 1 полем - Фамилия и в таб. с 10-ю полями?
или достаточно просто сообщения - "Найдено в таб1 и в таб.2"?
если да - то можно
в коде пройтись по коллекции TableDefs,
проверить - имеет ли таблица поле по которому поиск
если имеет - проверить через DCount - сколько записей удовлетворяют условию [Поле по которому поиск] = [Значение которое ищем]
если > 0, то добавить имя таблицы в список таб., в которых найдено