UserForm: остановить выполнение кода, но позволить пользователю просматривать книги? - PullRequest
0 голосов
/ 01 мая 2019

Я хотел бы показать пользовательскую форму, но позволить пользователю просматривать рабочие книги и рабочие таблицы.Я знаю, что могу скрыть UF, но я бы предпочел оставить UF.Это возможно?Я знаю, что есть vbModeless, но код продолжает выполняться, а это не то, что я хочу.

Мой код до сих пор выглядит примерно так:

Sub Test()
Dim Counter As Long
Dim wb As Workbook

Application.ScreenUpdating = False

 '-------main code

If Counter <> 0 Then
    frmTest.Show 
End If
Unload Me
For Each wb In Application.Workbooks
    If wb.Name Like "Report*" Then wb.Close SaveChanges:=True
Next wb

Application.ScreenUpdating = True 

End Sub

Я мог бы изменить оператор if на

If ErrorCount > 0 Then
       frmTest.Show vbModeless
    Else
        Call SaveWorkbooks
    End If
Application.ScreenUpdating = True
End Sub

И создать еще одну подпрограмму:

Sub SaveWorkbooks()
Dim wb As Workbook
    Unload frmTest
    For Each wb In Application.Workbooks
        If wb.Name Like "Report*" Then wb.Close SaveChanges:=True
    Next wb

End Sub

Полагаю, это работает, но

  1. Это хорошая практика, чтобы разделить ваш код таким образом?
  2. Что, если это произошло в середине моей основной подпрограммы?Это сделало бы 1) еще хуже.

Есть ли более элегантное решение

...