Как продолжить петли VBA - PullRequest
       2

Как продолжить петли VBA

0 голосов
/ 03 декабря 2018

Извинения, если это уже было опубликовано - я не смог найти ни одного конкретного для Excel (также из-за моего плохого кода, я плохо знаком с VBA).Я пытаюсь объединить несколько файлов в одну рабочую книгу, под разными листами.Большинство из них работает - но в операторе If Else, если условие выполнено, цикл прерывается, а не продолжается с остальными файлами в папке.Другая часть делает петлю.Я думал, что Do While filename <> "" переопределит оператор if / then.

У меня не получилось просто добавить «And Loop» (догадываясь, что это неверный код), так что я в растерянности из-зачто я должен добавить, или я должен идти вокруг этого другим путем.

Спасибо за вашу помощь!

Sub AllFiles()
    Dim folderPath As String
    Dim filename As String
    Dim wb As Workbook
    Dim master As Workbook
    Set master = ThisWorkbook

    folderPath = "C:\Users\Charmaine\Documents\Excel Files"
    master.Activate

    If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"

    filename = Dir(folderPath & "*.xlsm")
    Do While filename <> ""
        Application.ScreenUpdating = False

        Set wb = Workbooks.Open(folderPath & filename)
        Set wb = ActiveWorkbook
        ActiveSheet.Range("F1:G242").Select
        Selection.Copy
        master.Activate
        ActiveSheet.Paste
        ActiveCell.Offset(0, 2).Select
        wb.Activate
        ActiveWorkbook.Saved = True
        Application.CutCopyMode = False
        ActiveWindow.Close

        filename = Dir

        If ActiveSheet.Range("R1") = "C3" Then Sheets.Add.[after].Name = valuenewsheet Else

    Loop

    Application.ScreenUpdating = True
End Sub

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Спасибо всем.Я закончил тем, что изменил последнюю строку на

ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)

Я думал, что «valuenewsheet» означает, что он будет подсчитывать следующее доступное имя листа, но кажется излишним.

0 голосов
/ 03 декабря 2018
Do
'code
Loop While filename <> 

Интересно, что у меня возникла проблема с завершением цикла do while, в то время как оператор While не выполняется.Перенос оператора While после оператора Loop работал для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...