Как открывать и закрывать книги с помощью формы пользователя открыть

#excel #vba

Вопрос:

Я создал форму пользователя в Excel, поэтому, когда я открываю xlsm-файл, он открывает только форму пользователя, а книга скрыта. Пользователи должны иметь возможность открывать другие книги при использовании формы пользователя, чтобы они могли проверять информацию для заполнения формы пользователя. Затем форма пользователя передает эту информацию в скрытую книгу с помощью командной кнопки. Проблема в том, что если пользователь пытается закрыть эти открытые книги, он просит закрыть и сохранить как скрытую книгу, так и саму форму пользователя.

Этого не происходит со второй дополнительной книгой, открытой помимо скрытой, только с первой…

Код для открытия формы пользователя и скрытия книги:

  Dim wb As Workbook
 Set wb = Workbooks("IPS TOOL 2021 2W REV1.xlsm")

   If Workbooks.Count > 1 Then
 wb.Windows(1).Visible = False
Else
wb.Windows(1).Visible = False
Application.Visible = False
  
    End If

    Menu.Show vbModeless


End Sub
 

И это код одной из форм пользователя (есть 10 форм пользователя, но почти тот же код с незначительными изменениями):

 
'Inserindo Supply Confirmation

Dim wb As Workbook

 Set wb = Workbooks("IPS TOOL 2021 2W REV1.xlsm")
 wb.Windows(1).Visible = True
   
Dim FindString As String
Dim Rng As Range
Dim b As Integer


    response = MsgBox("Are you sure?", vbYesNo)

If response = vbNo Then

    MsgBox ("Ok")

    wb.Windows(1).Visible = False

    Application.Visible = False

    Exit Sub

End If


'Find model and input date

    FindString = ModelCombo.Value

    If Trim(FindString) <> "" Then

        With Sheets("NEWIPS").Range("B:B")

            Set Rng = .find(what:=FindString, _

                            after:=.Cells(.Cells.Count), _

                            LookIn:=xlValues, _

                            lookat:=xlWhole, _

                            searchorder:=xlByRows, _

                            searchdirection:=xlNext, _

                            MatchCase:=False)

            If Not Rng Is Nothing Then

                Application.GoTo Rng, True
            Else
                MsgBox "Nothing found"
            End If
        End With
    End If
                MsgBox "Date Saved Succesfully!"


'Cut 26 rows to right and insert TODAY'S date

 
    ActiveCell.Offset(0, 55).Select
    ActiveCell.Value = Date
 

'Update status


Call CommandButton2_Click

   

'Salvar nome de usuário

wb.Windows(1).Visible = False
 
    Dim wk As Workbook
    Set wk = Workbooks("IPS TOOL 2021 2W REV1.xlsm")
    wk.Windows(1).Visible = True


    Dim UserName As String
    Dim GS As Worksheet
    Set GS = Worksheets("DB")


   UserName = Environ("username")

 
'Find the end of column J in DB Tab
Dim c As Integer
c = 1

Do Until GS.Range("J" amp; c).Value = ""

    c = c   1
Loop


GS.Range("J" amp; c).Value = UserName
GS.Range("K" amp; c).Value = Label11
GS.Range("L" amp; c).Value = ModelCombo
GS.Range("M" amp; c).Value = Label2
GS.Range("N" amp; c).Value = Date

 
wk.Windows(1).Visible = False
If Workbooks.Count > 1 Then   

    wb.Windows(1).Visible = False

Else

    wb.Windows(1).Visible = False
    Application.Visible = False

    End If

End Sub

 

Private Sub CommandButton2_Click()


    Dim wb As Workbook
    Set wb = Workbooks("IPS TOOL 2021 2W REV1.xlsm")
    wb.Windows(1).Visible = True



'Inserir valores para concatenar e vlookapar na base de dados por modelo e supply country
Sheets("GRAPHS").Range("A3") = ModelCombo.Value
Sheets("GRAPHS").Range("B3") = yearcombo.Value



'VLookups na aba "Graphs" coluna B até G

Dim myRange As Range
Set myRange = Worksheets("GRAPHS").Range("B:G")

On Error GoTo ErrorHandler

TextBox2.Value = Application.WorksheetFunction.VLookup("Issue IDL", myRange, 3, False)
TextBox3.Value = Application.WorksheetFunction.VLookup("Issue IDL", myRange, 4, False)
TextBox10.Value = Application.WorksheetFunction.VLookup("Issue IDL", myRange, 6, False)
TextBox4.Value = Application.WorksheetFunction.VLookup("N/E", myRange, 3, False)
TextBox5.Value = Application.WorksheetFunction.VLookup("N/E", myRange, 4, False)
TextBox11.Value = Application.WorksheetFunction.VLookup("N/E", myRange, 6, False)
TextBox16.Value = Application.WorksheetFunction.VLookup("Disclosure List", myRange, 3, False)
TextBox15.Value = Application.WorksheetFunction.VLookup("Disclosure List", myRange, 4, False)
TextBox14.Value = Application.WorksheetFunction.VLookup("Disclosure List", myRange, 6, False)
TextBox6.Value = Application.WorksheetFunction.VLookup("SAP Master Data Registration", myRange, 3, False)
TextBox7.Value = Application.WorksheetFunction.VLookup("SAP Master Data Registration", myRange, 4, False)
TextBox12.Value = Application.WorksheetFunction.VLookup("SAP Master Data Registration", myRange, 6, False)
TextBox8.Value = Application.WorksheetFunction.VLookup("NCM", myRange, 4, False)
TextBox9.Value = Application.WorksheetFunction.VLookup("NCM", myRange, 3, False)
TextBox13.Value = Application.WorksheetFunction.VLookup("NCM", myRange, 6, False)
TextBox18.Value = Application.WorksheetFunction.VLookup("Delay Comments", myRange, 3, False)
TextBox17.Value = Application.WorksheetFunction.VLookup("Delayed Reason", myRange, 3, False)
TextBox36.Value = Application.WorksheetFunction.VLookup("Supply Confirmation", myRange, 3, False)
TextBox35.Value = Application.WorksheetFunction.VLookup("Supply Confirmation", myRange, 4, False)
TextBox34.Value = Application.WorksheetFunction.VLookup("Supply Confirmation", myRange, 6, False)


'Comments

TextBox33.Value = Application.WorksheetFunction.VLookup("Comments1", myRange, 3, False)
 

If Workbooks.Count > 1 Then  

    wb.Windows(1).Visible = False

Else

    wb.Windows(1).Visible = False


    Application.Visible = False


    End If

Exit Sub

   spec_form.Show vbModal


ErrorHandler:

MsgBox ("Please check Model and/or Year")


If Workbooks.Count > 1 Then

    wb.Windows(1).Visible = False


Else

    wb.Windows(1).Visible = False

    Application.Visible = False

   

    
    End If

 

 

End Sub
 

Пожалуйста, любая помощь будет признательна, я схожу с ума, пытаясь понять это.