Комбинируйте 3 кода VBA и запускайте их как один фрагмент кода - PullRequest
0 голосов
/ 16 января 2019

У меня есть 3 кода VBA, которые выполняют одинаковые действия на 3 разных листах. Я хочу запустить все 3 кода как один код.

Я сделал это так, но это дает

ошибка приложения (Ошибка 1004)

Sub lastRow()
    Dim wsS1 As Worksheet 'Sheet1
    Dim wsS2 As Worksheet 'sheet2
    Dim lastR As Long, lastC As Long

    Set wsS1 = Sheets("Instru Input")
    Set wsS2 = Sheets("Final Input")
    Set wsS3 = Sheets("FinalInputFile")

    With wsS1
        lastR = .Range("A" & .Rows.Count).End(xlUp).Row - 4
    End With

    With wsS2
        lastC = .Cells(3, Columns.Count).End(xlToLeft).Column
        Range(.Cells(3, 1).Address, .Cells(3, lastC).Address).AutoFill 
        .Range(.Cells(3, 1).Address, .Cells(lastR, lastC).Address)
    End With

    with wsS1
        lastR = .Range("A" & .Rows.Count).End(xlUp).Row - 4
    End With

    With wsS3
        lastC = .Cells(3, Columns.Count).End(xlToLeft).Column
        Range(.Cells(3, 1).Address, .Cells(3, lastC).Address).AutoFill 
        .Range(.Cells(3, 1).Address, .Cells(lastR, lastC).Address)
    End With
End Sub

1 Ответ

0 голосов
/ 16 января 2019

Обратите внимание, что все ваши Range должны начинаться с точки, такой как .Range, в противном случае они не используют оператор With. Некоторым из ваших Range не хватает точки.

Так что вместо

With wsS2
    lastC = .Cells(3, Columns.Count).End(xlToLeft).Column
    Range(.Cells(3, 1).Address, .Cells(3, lastC).Address).AutoFill 
    .Range(.Cells(3, 1).Address, .Cells(lastR, lastC).Address)
End With

должно быть

With wsS2
    lastC = .Cells(3, Columns.Count).End(xlToLeft).Column
    .Range(.Cells(3, 1).Address, .Cells(3, lastC).Address).AutoFill .Range(.Cells(3, 1).Address, .Cells(lastR, lastC).Address)
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...