У меня есть рабочая тетрадь, в которой есть один основной лист и остальные листы.По сути, мой код выполняет циклический просмотр листов в книге, не называемой «Основным», и извлекает значения и помещает их в соответствующий столбец на Главном листе.IsError проверяет, существует ли уже имя листа в списке, а если нет - не добавляет значений.Макет листов довольно запутан, со многими объединенными ячейками - https://imgur.com/cayZXUA.
Так что на каждом листе (кроме основного) у меня есть блок, который содержит значения для "заработной платы", "консолидированного социального налога" и "разное"Расходы".Мне пришла в голову идея дать этим блокам на каждом листе название «Допущения», и я создал область действия для каждого листа, чтобы «Допущения» могли повторяться на всех листах, и я мог проходить через них.Вот изображение этого блока - https://imgur.com/nPYyLbM.
Код выполняется, но я получаю # ЗНАЧЕНИЕ!ошибки на моем основном листе - https://imgur.com/a/H2TOFmW Прошу прощения за ссылки, пока не имею разрешения публиковать изображения
Вот сам код:
Sub Sheets()
Dim wsheet As Worksheet
With ThisWorkbook.Sheets("Main")
For Each wsheet In ThisWorkbook.Sheets
If wsheet.Name <> "Main" Then
Set nextEntry = .Cells(.Rows.Count, "G").End(xlUp).Offset(1, 0)
Set nextEntry_payroll = .Cells(.Rows.Count, "AI").End(xlUp).Offset(1, 0)
Set nextEntry_consolidated_social_tax = .Cells(.Rows.Count, "AJ").End(xlUp).Offset(1, 0)
Set nextEntry_miscellaneous_expenditures = .Cells(.Rows.Count, "AK").End(xlUp).Offset(1, 0)
If IsError(Application.Match(wsheet.Name, .Range("G:G"), 0)) Then
nextEntry.Value = wsheet.Name
nextEntry_payroll.Value = wsheet.Application.VLookup("payroll", "Assumptions", 3, 0)
nextEntry_consolidated_social_tax.Value = wsheet.Application.VLookup("consolidated social tax", "Assumptions", 3, 0)
nextEntry_miscellaneous_expenditures.Value = wsheet.Application.VLookup("miscellaneous expenditures", "Assumptions", 3, 0)
End If
End If
Debug.Print wsheet.Name
Next wsheet
End Sub