Полагаю, хотя некоторые данные сложно проверить, ваша проблема в том, что вы пытаетесь найти несколько листов, но смотрите только на один лист. Журнал проекта в этом случае.
Вы можете только обновлять / извлекать информацию из Журнала проекта. Если данные существуют на другом листе;вы ошибетесь. Похоже, что сначала вам нужно выполнить поиск по всей книге и всем листам;и в зависимости от того, где вы находите информацию, динамически «захватывает» этот лист.
В данный момент вы смотрите на 1 статический лист. Это твое намерение?
Я написал пример ниже. У меня есть 2 рабочих листа (Sheet1, Sheet2). Sheet1 не имеет заголовков. В первой колонке есть имена, во второй - то, что им нравится. Sheet2 аналогичен без заголовков, но в столбце 1 - цвета, в столбце 2 - объекты (грузовик, автомобиль и т. Д.).
Public Sub main()
Dim bk As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim size As Long
Dim counter As Long
Dim counter2 As Long
Dim find As String
Dim found As String
Dim shtName(1) As String
size = 3
shtName(0) = "Sheet1"
shtName(1) = "Sheet2"
Set bk = ThisWorkbook
find = "John"
For counter2 = 0 To 1
For counter = 1 To size
If bk.Sheets(shtName(counter2)).Cells(counter, 1).Value2 = find Then
found = bk.Sheets(shtName(counter2)).Cells(1, 2).Value2
End If
Next counter
Next counter2
End Sub
Есть много способов сделать это, в зависимости от ваших знаний VBA. Я создал массив строк из 2 элементов и сохранил имена моих рабочих листов. Затем я просмотрел эти таблицы и каждую строку столбца 1 этих таблиц.
Этот код с моей настройкой делает found = Jazz.
Это должно помочь вам начать динамический поиск таблиц.