У меня есть пользовательская форма «AMForm», чтобы учащиеся могли выбирать свои классы в старшей школе.
Для каждого класса имеются смежные кнопки для выбора «да» или «нет», если они хотят записаться наНапример, класс «Машиностроение» с опциональными кнопками «да» или «нет».
Как только они отправят свою форму, я записываю варианты в электронную таблицу «AMChoices».Эта электронная таблица имеет каждый класс в указанных выше заголовках, поэтому она заполняет ячейку буквой «х», если она была выбрана, например, если выбрана кнопка «Машиностроение», она заполняет «х» под этой ячейкой.
Какэлектронная таблица будет содержать много пользователей, она заполняет следующую пустую строку для записи каждой записи.
Форма пользователя имеет ограничения, такие как невозможность выбора определенных классов вместе.У меня есть сообщения об ошибках, но когда они нажимают кнопку «отправить», даже если есть ошибки, варианты записываются.
Как я могу отменить выбор, который был записан, до тех пор, пока он не будет принят?
В моем коде «optAMIB1» относится к кнопке «да» для «Машиностроение».Есть много классов, поэтому в моей форме есть несколько таких кодов, но я только что добавил их для простоты.Во-вторых, «txtAMS1» относится к текстовому полю, которое автоматически обновляется в соответствии с общим количеством кредитов выбранных опций, например, Mech Eng стоит 20 кредитов, но им нужно выбрать достаточно классов, чтобы составить 40.
Private Sub btnAMSubmit1_Click()
Dim Total As String
Dim Total2 As String
Dim CurrentCell As Range
Dim AMChoiceSht As Worksheet
Dim LastRow As Long
'Semester 1 Credits
Total = 0
' set the worksheet object
Set AMChoiceSht = ThisWorkbook.Worksheets("AMChoices")
'Choose IB1 Sem 1
With AMChoiceSht
LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row ' find last row in column B
Set CurrentCell = .Range("F" & LastRow + 1) ' set the range of next empty row
End With
If Me.optAMIB1 Then
Total = Total + 20
CurrentCell.Value2 = "X"
End If
If Me.optAMIB1 = False Then
CurrentCell.Value2 = "-"
End If
'add up to 40
If Me.txtAMS1 <> 40 Then
MsgBox "Error. Semester One Credits must be equal to 40."
End If