Этот вопрос находится за пределами моего диапазона навыков - я никогда раньше не работал с кнопками или флажками в «живой» форме. Я объединил две формы Excel вместе, чтобы создать одну основную форму. Несмотря на то, что форма очень похожа, в Калифорнии есть дополнительные параметры для проверки типа списка поставщиков, чего нет в национальной форме.
![enter image description here](https://i.stack.imgur.com/8Mx2j.png)
То, что я хотел бы сделать, это выбрать Калифорнию вверху, и в качестве опций должны быть доступны Список региональных поставщиков и Полный список Калифорнии (CD), тогда как если я выберу Национальный, они будут недоступны. Множество разных людей будут использовать эту форму, поэтому я должен убедиться, что они не могут нажимать на то, что они хотят. Я не сильный кодер, кто-то еще строил формы, я просто откровенничал их вместе. Большинство решений, с которыми я столкнулся, которые я могу понять, предназначены для элементов управления ActiveX, и я использовал простые элементы управления формы. Я также прошу прощения за размещение всего кода, я не совсем уверен, куда вставить контрольный код флажка. Если у кого-то есть хороший ресурс на эту тему для новичков, которого они могут порекомендовать, я был бы очень признателен за это.
Option Explicit
Function checkComplete()
'Dim TextBox1 As OLEObject
If IsEmpty(Range("I6")) Then
MsgBox "Please enter the Claimant Name."
Range("I6").Select
checkComplete = False
ElseIf IsEmpty(Range("I8")) Then
MsgBox "Please enter the Claim #."
Range("I8").Select
checkComplete = False
ElseIf IsEmpty(Range("AF6")) Then
MsgBox "Please enter the Date that the list is needed by."
Range("AF6").Select
checkComplete = False
'ElseIf TextBox1.Text = "" Then
'MsgBox "Please enter a description."
'TextBox1.Select
'checkComplete = False
Else
checkComplete = True
End If
End Function
Sub submitForm()
If checkComplete = False Then Exit Sub
Dim thisWb As Workbook, wbTemp As Workbook
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Set thisWb = ThisWorkbook
Set wbTemp = Workbooks.Add
'Save Network Development Form worksheet to new workbook.
'Needs to be copied from an xltm to an xlsx workbook in order to email a good xlsx file that is not corrupt.
thisWb.Sheets(1).Copy After:=wbTemp.Sheets(3)
For Each ws In wbTemp.Worksheets
If ws.Name <> "Network Development Form" Then
ws.Delete
End If
Next
ActiveWindow.ScrollRow = 1
'Save temporary copy of workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
TempFilePath = Environ$("temp") & "\"
TempFileName = "Network Development - Claim#" & Range("I8").Value
FileExtStr = ".xlsx"
Set wbTemp = ActiveWorkbook
wbTemp.SaveCopyAs TempFilePath & TempFileName & FileExtStr
'Email copy of form to Networks
Dim outlook As Object
Dim outlookMail As Object
Dim UName As Variant
Set outlook = CreateObject("Outlook.Application")
Set outlookMail = outlook.CreateItem(0)
UName = Environ("UserName")
With outlookMail
.To = ""
.CC = UName & "@auw.com"
.Subject = "Network Development Form"
.Attachments.Add TempFilePath & TempFileName & FileExtStr
.Send '.Display
End With
Kill TempFilePath & TempFileName & FileExtStr
Set outlook = Nothing
Set outlookMail = Nothing
wbTemp.Activate
wbTemp.Close SaveChanges:=False
thisWb.Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
thisWb.Close SaveChanges:=False
End Sub