#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
Пожалуйста, любая помощь будет признательна, я схожу с ума, пытаясь понять это.