Раннее завершение макроса и закрытие рабочей книги с учетом определенных критериев - PullRequest
0 голосов
/ 11 сентября 2018

Ниже приведены последние несколько строк длинного макроса, которые я должен сгенерировать в своем файле продаж для своего бизнеса. Макрос работает нормально и экспортируется именно так, как я хочу, но я бы хотел внести небольшое изменение.

Файл, который я экспортирую, содержит список из 10 цифр в столбце A, а следующий код делает окончательное чтение XXEND, за которым следует пара пустых строк.

Columns("B:B").Select
Selection.Delete Shift:=xlToLeft

Range("A1").Select
Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(1), Scroll:=True

ActiveCell.FormulaR1C1 = "XXEND"
Range("A1").Select
Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(2), Scroll:=True
ActiveCell.FormulaR1C1 = "'"
Range("A1").Select

    ActiveWorkbook.SaveAs FileName:="/Users/LucasWayne/Desktop/Websales.txt", FileFormat:=xlText, CreateBackup:=False
    Shell ("/Users/LucasWayne/Desktop/WebSalesToK4.app") 
ActiveWorkbook.Close
End Sub

Иногда в моем списке нет значений в столбце A, причем значение XXEND является единственным значением во всей книге. Если это так, то перед вводом XXEND, если в столбце A нет значений, я бы хотел досрочно завершить макрос и вместо этого просто закрыть файл Excel без сохранения.

У кого-нибудь есть совет?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Вы не можете закрыть макрос, а затем закрыть книгу, поэтому приведенный ниже код просто выходит из макроса:

Columns("B:B").Select
Selection.Delete Shift:=xlToLeft

Range("A1").Select
Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(1), Scroll:=True
If Not WorksheetFunction.Subtotal(103, Range("A:A")) > 1 Then Exit Sub 'This counts the number of cell in column A with something in it and assumes there's a header - if there isn't a header ten just change the 1 to 0
ActiveCell.FormulaR1C1 = "XXEND"
Range("A1").Select
Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(2), Scroll:=True
ActiveCell.FormulaR1C1 = "'"
Range("A1").Select

    ActiveWorkbook.SaveAs Filename:="/Users/LucasWayne/Desktop/Websales.txt", FileFormat:=xlText, CreateBackup:=False
    Shell ("/Users/LucasWayne/Desktop/WebSalesToK4.app")
ActiveWorkbook.Close
...