У меня есть одна пользовательская форма в книге «main.xlsm», которая открывается при открытии книги, в этой пользовательской форме у меня есть одна кнопка, которая открывает другую книгу «test1.xlsm». В книге «test1.xlsm» у меня есть пользовательская форма, которая открывается при открытии книги, в этой пользовательской форме у меня есть одна кнопка, которая закрывает эту книгу и сохраняет ее. Идея заключалась в том, что после закрытия пользовательской формы из "test1.xlsm" я должен вернуться к пользовательской форме из "main.xlsm", но в строке Workbooks("test1.xlsm").Close он закрывает все открытые пользовательские формы.

Это код кнопки из пользовательской формы в main.xlsm:

Private Sub CommandButton1_Click()
    Workbooks.Open ("D:\test1.xlsm")
End Sub

Это код кнопки из пользовательской формы в main.xlsm:

Private Sub SaveButton1_Click()
    Workbooks("D:\test1.xlsm").Close SaveChanges:=True
End Sub
2
Mihai Moldovan 1 Янв 2018 в 17:08

2 ответа

Лучший ответ

Задав этот вопрос на excel forum Мне было предложено изменить свойство ShowModal для каждой формы на ShowModal FALSE. Итак, я добавил этот аргумент в свой код в ThisWorkbook:

  UserForm1.Show vbModeless

В обоих пользовательских формах, и это сработало.

0
Mihai Moldovan 1 Янв 2018 в 17:06

Возможно, вы откроете test1 в таком новом экземпляре

Private Sub CommandButton1_Click()
Dim xl As New Application

    With xl
        .Visible = True
        .Workbooks.Open ("D:\Test1.xlsm")
        .Quit
    End With

End Sub
0
Storax 1 Янв 2018 в 15:28