2015-04-30 1 views
0

Я создал UserForm с несколькими функциями.Userform в макросе VBA закрывает весь файл excel

Форма открывается при открытии файла Excel, однако, если я попытаюсь закрыть форму, файл Excel будет закрыт. Кроме того, я не могу открыть VBA этого Excel (содержащий форму), так что я делаю (и это действительно dum), чтобы открыть другой Excel, нажмите Alt + F11, чтобы открыть макросреда и то я могу открыть файл Excel с помощью UserForm.

Я думаю, что моя проблема в данном конкретном коде:

Private Sub UserForm_Terminate() 
    'Application.Visible = True 
    ActiveWorkbook.Saved = True 
    Application.Quit 
End Sub 

Может кто-нибудь угадать, что здесь проблема?

+1

Что бы вы хотели сделать, а не закрыть Excel? Метод 'Application.Quit' - это то, что закрывает Excel, когда пользовательская форма закрыта. Удалите или прокомментируйте эту строку и повторите попытку. Есть ли что-то, что вы хотите сделать, когда пользовательская форма закрыта? – Soulfire

+1

возможно, вам нужно использовать команду 'unload userform' вместо' Application.Quit', которая закрывает excel, как предполагалось. – Dubison

ответ

0

Если вы просто хотите закрыть Userform, используйте Unload Me вместо Application.Quit.

0

Вы должны Покажите свой UserForm как безрежимного:

UserForm.Show False 

Таким образом, вы бы иметь возможность перемещаться за UF и, возможно, даже с открытым VBA напрямую.

И, очевидно, если вы просто закроете приложение-хост, когда вы выйдете из UF, будет сложнее сделать что-нибудь еще!

Так что, возможно, это будет лучшим решением:

Private Sub UserForm_Terminate() 
    ActiveWorkbook.Saved = True 
    'ThisWorkbook.Save 


    If MsgBox("Do you want to close Excel?", vbOKCancel + vbQuestion, "Exit Excel?") <> vbOK Then 
     'Do nothing 
    Else 
     Application.Quit 
    End If 
End Sub 

Я не знаю, что ваша линия ActiveWorkbook.Saved = True была для, если она хочет сохранить или просто для выхода без сообщения, потому что вы не сохраните файл с этим.