Извините, я не вижу изображения, поэтому я собрал что-то, что должно работать.
Есть две процедуры - RunMe
просто запускает процедуру Test
и передает ее на первый лист, другой листзатем считается вторым листом.
Я не включил блок For...Each
, так как он использует lrow
, который не определен до тех пор, пока не будет использован, поэтому по умолчанию будет 0
- не уверен, что выпытаюсь сделать там.
Я добавил строку кода в конце Test
, которая будет вызывать себя снова, но пропуская другой лист.
Sub RunMe()
Test ThisWorkbook.Worksheets("Lago")
'If not using last line in main code, then
'include this to run second sheet at time of your choosing.
'Test ThisWorkbook.Worksheets("MF")
End Sub
Sub Test(FirstSheet As Worksheet)
Dim SecondSheet As Worksheet
Dim lrow As Long
Dim eRng As Range
If FirstSheet.Name = "Lago" Then
'The "Parent" of a worksheet is the workbook.
Set SecondSheet = FirstSheet.Parent.Worksheets("MF")
Else
Set SecondSheet = FirstSheet.Parent.Worksheets("Lago")
End If
With FirstSheet
lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
With .Range(.Cells(3, 1), .Cells(lrow, 99))
On Error Resume Next
Set eRng = .SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not eRng Is Nothing Then
Intersect(.Parent.Range("A:CU"), eRng.EntireRow).Copy
SecondSheet.Range("A3").PasteSpecial
End If
End With
End With
'Now run again but with sheets reversed.
'Include this line to run both sheets in one go.
If FirstSheet.Name = "Lago" Then Test SecondSheet
End Sub