Я пытаюсь понять это. В моем основном суб, я вызываю функцию. Как-то это закончилось моей победой в конце этой функции. Он отображает «До конца» и никогда не отображает «Я сделал это» Кто-нибудь знает, в чем проблема?Функция VBA никогда не возвращается к основному Sub
Sub Main()
call CopyAndDelete()
msgbox "I made it out"
End Sub
Function CopyAndDelete()
Dim CopyFromWB As Workbook
Dim CopyToWB As Workbook
Dim wb As Workbook
Dim CopyThisWS As Worksheet
Dim ws As Worksheet
Dim Path As String
Dim FileName As String
Application.DisplayAlerts = False
Set CopyToWB = Workbooks("test.xlsm")
CopyToWB.Activate
For Each ws In ActiveWorkbook.Sheets
Select Case ws.Name
Case "A"
ws.Delete
Case "B"
ws.Delete
Case "C"
ws.Delete
Case "D"
ws.Delete
End Select
Next ws
Path = Application.GetOpenFilename(Title:="choose a file")
FileName = Right(Path, Len(Path) - InStrRev(Path, "\"))
For Each wb In Workbooks
If wb.Name = FileName Then
Workbooks(FileName).Close
End If
Next wb
Set CopyFromWB = Workbooks.Open(Path)
Set CopyThisWS = CopyFromWB.Worksheets(1)
CopyThisWS.Copy After:=CopyToWB.Worksheets(1)
ActiveSheet.Name = "New A"
CopyFromWB.Close
Application.DisplayAlerts = True
MsgBox "Before end"
End Function
Пришло модальный, так что это эффективно точка разрыва. Таким образом, вы должны нажать «ОК» в сообщении «До конца», прежде чем «Я это сделаю» будет выполнен. Он должен продолжить работу после того, как вы очистите первое диалоговое окно. –
Я на самом деле нажал кнопку «ОК», и это конец запуска. Как я сказал, «я это сделал» никогда не отображается на экране –
Попробуйте сделать его 'Sub' вместо' function' – Davesexcel