Выход VBA в отношении кнопок выбора

Я студент A-Level, изучающий информатику, и в рамках своего курса мне нужно создать программу. Моя программа основана на VBA и что она предназначена для вывода данных из пользовательских форм в мою таблицу:

Таблицу и способ, которым она выглядит

Я создал эти 3 пользовательские формы:

imgur.com/ftqfEBt - Userform 1 imgur.com/pT2WHuD - Userform 2 imgur.com/BHHGOPv - Userform 3 

Программа предназначена для вывода всех деталей из пользовательских форм в определенные разделы электронной таблицы. Проблема, которую я получаю, связана с userform 3, и проблема в том, что мой код не хочет выводить в электронную таблицу. Чтобы объяснить, что я имею в виду, я собираюсь поместить код для всех пользовательских форм ниже:

Пользовательская форма 1

 Private Sub Forename_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Set available characters to AZ only If (KeyAscii < 65 Or KeyAscii > 90) And (KeyAscii < 97 Or KeyAscii > 122) Then KeyAscii = 0 End Sub Private Sub Surname_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Set available characters to AZ only If (KeyAscii < 65 Or KeyAscii > 90) And (KeyAscii < 97 Or KeyAscii > 122) Then KeyAscii = 0 End Sub Private Sub School_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Set available characters to AZ only If (KeyAscii < 65 Or KeyAscii > 90) And (KeyAscii < 97 Or KeyAscii > 122) Then KeyAscii = 0 End Sub Private Sub Candidate_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Set available characters to 0-9 only Select Case KeyAscii Case vbKey0 To vbKey9, vbKeyBack, vbKeyClear, vbKeyLeft, _ vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab Case Else KeyAscii = 0 Beep End Select End Sub Private Sub Closing_Click() 'Close the UserForm Unload Me End Sub Private Sub Reset_Click() 'Clear all fields Call UserForm_Initialize End Sub Sub ValidtyCheck() 'Check if all data is entered correctly If Forename.Value = "" Then Me.Forename.SetFocus MsgBox "The Forename is Missing" 'Validation Check - Makes sure the Value is not empty End If If Surname.Value = "" Then Me.Surname.SetFocus MsgBox "The Surnamee is Missing" 'Validation Check - Makes sure the Value is not empty End If If School.Value = "" Then Me.School.SetFocus MsgBox "The School you previously attended to is Missing" 'Validation Check - Makes sure the Value is not empty End If If Candidate.Value = "" Then Me.Candidate.SetFocus MsgBox "The Candidate number is Missing" 'Validation Check - Makes sure the Value is not empty End If If IsNumeric(Candidate.Value) = False Then MsgBox "Candidate number contains characters other than numbers" 'Validation Check - makes sure only numbers are entered End If If Trim(Me.Candidate.TextLength > 4) Then Me.Candidate.SetFocus MsgBox ("Candidate Number Contains more than 4 characters") 'Validation Check - Makes sure that no more than 4 characters are entered End If If Trim(Me.Candidate.TextLength < 4) Then Me.Candidate.SetFocus MsgBox ("Candidate Number Contains less than 4 characters") 'Validation Check - Makes sure that no less than 4 characters are entered End If End Sub Sub Main() On Error GoTo NoBlanks Range("A1:A9000").SpecialCells(xlCellTypeBlanks).Value = "N/A" NoBlanks: Resume Next ' or add code here to execute when there are no empty cells End Sub Sub RemoveBlankRows() 'Deletes any row with blank cells located inside a designated range On Error Resume Next Dim rng As Range Set rng = Range("A5:A9000").SpecialCells(xlCellTypeBlanks) rng.EntireRow.Delete End Sub Sub InputDetails() 'Input details into specific cells Set ws = Sheets("Details") Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = Forename.Value Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = Surname.Value Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = School.Value Range("A" & Rows.Count).End(xlUp).Offset(0, 4).Value = Candidate.Value End Sub Private Sub Submit_Click() 'Output all information into the spreadsheet Call ValidtyCheck Call RemoveBlankRows Call InputDetails Unload Me 'opens 2nd userform GCSEsTaken.Show End Sub Private Sub UserForm_Initialize() 'Empty ForenameTextBox Forename.Value = "" 'Clear SurnameTextBox Surname.Value = "" 'Clear SchoolTextBox School.Value = "" 'Clear CandidateTextBox Candidate.Value = "" 'Set Focus on ForenameTextBox Forename.SetFocus End Sub 

Это весь код для всего Userform 1. Я знаю, что я размещаю много кода, но это потому, что мне нужно, чтобы показать, что с ним не так.

Userform 2

 Private Sub Closing_Click() 'Close the UserForm Unload Me End Sub Private Sub Reset_Click() 'Clear all fields Call UserForm_Initialize End Sub Private Sub GCSEsTaken_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Set available characters to 0-9 only Select Case KeyAscii Case vbKey0 To vbKey9, vbKeyBack, vbKeyClear, vbKeyLeft, _ vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab Case Else KeyAscii = 0 Beep End Select End Sub Sub InputDetails() 'Input details into specific cells Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = GCSEsTaken.Value End Sub Private Sub Submit_Click() Call InputDetails Unload Me 'opens 2nd userform GCSE.Show End Sub Private Sub UserForm_Initialize() 'Empty GCSE's Taken TextBox GCSEsTaken.Value = "" End Sub 

Следующий фрагмент кода для Userform 3, и это то, что идет не так, что материал, который идет не так, находится внутри InputDetails () Sub. Плюс, если у вас есть идея, я могу сократить OptionValues ​​() Sub, пожалуйста, сделайте

 Private Sub Closing_Click() 'Close the UserForm Unload Me End Sub Private Sub Reset_Click() 'Clear all fields Call UserForm_Initialize End Sub Private Sub OptionsValues() MathsAx.Value = "A*" MathsA.Value = "A" MathsB.Value = "B" MathsC.Value = "C" MathsD.Value = "D" MathsE.Value = "E" MathsF.Value = "F" EnglishLangAx.Value = "A*" EnglishLangA.Value = "A" EnglishLangB.Value = "B" EnglishLangC.Value = "C" EnglishLangD.Value = "D" EnglishLangE.Value = "E" EnglishLangF.Value = "F" EnglishLangU.Value = "U" EnglishLitAx.Value = "A*" EnglishLitA.Value = "A" EnglishLitB.Value = "B" EnglishLitC.Value = "C" EnglishLitD.Value = "D" EnglishLitE.Value = "E" EnglishLitF.Value = "F" EnglishLitU.Value = "U" SingSienceAx.Value = "A*" SingSienceA.Value = "A" SingSienceB.Value = "B" SingSienceC.Value = "C" SingSienceD.Value = "D" SingSienceE.Value = "E" SingSienceF.Value = "F" SingSienceU.Value = "U" DouScienceAx.Value = "A*" DouScienceA.Value = "A" DouScienceB.Value = "B" DouScienceC.Value = "C" DouScienceD.Value = "D" DouScienceE.Value = "E" DouScienceF.Value = "F" DouScienceU.Value = "U" TriScienceAx.Value = "A*" TriScienceA.Value = "A" TriScienceB.Value = "B" TriScienceC.Value = "C" TriScienceD.Value = "D" TriScienceE.Value = "E" TriScienceF.Value = "F" TriScienceU.Value = "U" REAx.Value = "A*" REA.Value = "A" REB.Value = "B" REC.Value = "C" RED.Value = "D" REE.Value = "E" REF.Value = "F" REU.Value = "U" ICTAx.Value = "A*" ICTA.Value = "A" ICTB.Value = "B" ICTC.Value = "C" ICTD.Value = "D" ICTE.Value = "E" ICTF.Value = "F" ICTU.Value = "U" DAndTAx.Value = "A*" DAndTA.Value = "A" DAndTB.Value = "B" DAndTC.Value = "C" DAndTD.Value = "D" DAndTE.Value = "E" DAndTF.Value = "F" DAndTU.Value = "U" HistoryAx.Value = "A*" HistoryA.Value = "A" HistoryB.Value = "B" HistoryC.Value = "C" HistoryD.Value = "D" HistoryE.Value = "E" HistoryF.Value = "F" HistoryU.Value = "U" GeographyAx.Value = "A*" GeographyA.Value = "A" GeographyB.Value = "B" GeographyC.Value = "C" GeographyD.Value = "D" GeographyE.Value = "E" GeographyF.Value = "F" GeographyU.Value = "U" MusicAx.Value = "A*" MusicA.Value = "A" MusicB.Value = "B" MusicC.Value = "C" MusicD.Value = "D" MusicE.Value = "E" MusicF.Value = "F" MusicU.Value = "U" DramaAx.Value = "A*" DramaA.Value = "A" DramaB.Value = "B" DramaC.Value = "C" DramaD.Value = "D" DramaE.Value = "E" DramaF.Value = "F" DramaU.Value = "U" SociologyAx.Value = "A*" SociologyA.Value = "A" SociologyB.Value = "B" SociologyC.Value = "C" SociologyD.Value = "D" SociologyE.Value = "E" SociologyF.Value = "F" SociologyU.Value = "U" PsychologyAx.Value = "A*" PsychologyA.Value = "A" PsychologyB.Value = "B" PsychologyC.Value = "C" PsychologyD.Value = "D" PsychologyE.Value = "E" PsychologyF.Value = "F" PsychologyU.Value = "U" EconomicsAx.Value = "A*" EconomicsA.Value = "A" EconomicsB.Value = "B" EconomicsC.Value = "C" EconomicsD.Value = "D" EconomicsE.Value = "E" EconomicsF.Value = "F" EconomicsU.Value = "U" FrenchAx.Value = "A*" FrenchA.Value = "A" FrenchB.Value = "B" FrenchC.Value = "C" FrenchD.Value = "D" FrenchE.Value = "E" FrenchF.Value = "F" FrenchU.Value = "U" SpanishAx.Value = "A*" SpanishA.Value = "A" SpanishB.Value = "B" SpanishC.Value = "C" SpanishD.Value = "D" SpanishE.Value = "E" SpanishF.Value = "F" SpanishU.Value = "U" ArabicAx.Value = "A*" ArabicA.Value = "A" ArabicB.Value = "B" ArabicC.Value = "C" ArabicD.Value = "D" ArabicE.Value = "E" ArabicF.Value = "F" ArabicU.Value = "U" PEAx.Value = "A*" PEA.Value = "A" PEB.Value = "B" PEC.Value = "C" PED.Value = "D" PEE.Value = "E" PEF.Value = "F" PEU.Value = "U" End Sub Sub InputDetails() 'Input details into specific cells If MathsAx.Value = True Then Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = MathsAx.Value 'THIS IS JUST A CODE TEST HENCE WHY MOST QUOTED OUT I DON'T KNOW BUT IT DOESNT GIVE ANY VALUES IN THE SPREADHSEET 'Else ' Cells(emptyRow, 6).Value = "No" End If 'THIS CODE SEEMS TO WORK FOR THE PREVIOUS USERFORMS BUT THIS ONE IT DOESN'T WORK AT ALL AND I DON'T KNOW WHY 'Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = Frame1.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 7).Value = Frame2.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 8).Value = Frame3.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 9).Value = Frame4.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 10).Value = Frame5.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 11).Value = Frame6.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 12).Value = Frame7.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 13).Value = Frame8.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 14).Value = Frame9.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 15).Value = Frame10.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 16).Value = Frame11.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 17).Value = Frame12.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 18).Value = Frame13.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 19).Value = Frame14.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 20).Value = Frame15.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 21).Value = Frame16.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 22).Value = Frame17.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 23).Value = Frame18.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 24).Value = Frame19.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 25).Value = Frame20.Value 'Range("A" & Rows.Count).End(xlUp).Offset(0, 26).Value = Other.Value End Sub Private Sub Submit_Click() Call OptionsValues Call InputDetails Unload Me End Sub Private Sub UserForm_Initialize() 'Empty Other TextBox Other.Value = "" Dim ctlX As MSForms.Control For Each ctlX In Frame1.Controls If TypeOf ctlX Is MSForms.OptionButton Then If ctlX.Value Then ctlX.Value = False Exit For End If End If Next End Sub 

Я знаю, что я написал много кода, но это просто, что код течет между собой, и я не понимаю, почему Userform 3 не дает никаких подробностей.

  • Форма входа в Excel VBA с сохраненными паролями в базе данных Access
  • Excel / VBA - ошибка времени выполнения 91 возникает только после ввода и выхода из режима разработки
  • Входной ящик заполняет ячейки в таблице
  • Автоматизировать идентификатор с помощью пользовательских записей - Excel
  • ярлыки для combobox не отображаются для одной команды, но для других команд
  • Заполнение ComboBox со списком диаграмм на листе
  • Текстовое поле VBA, отображающее валюту
  • XL VBA Как запретить игнорировать свойства UserTorm и .Left при первом .Show?
  • Вставьте данные листа в combobox userform без дублирования - Excel Vba
  • Excel Userform - Обратный фокус на ComboBox после нажатия кнопки ввода
  • Функция не записывает в требуемую ячейку следующий расчет массива; Пользовательские формы excel vba
  • Interesting Posts

    Как VBA нажать кнопку на панели инструментов addin … CommandBars?

    Перекрестная ссылка Excel VBA

    Как читать в DateTime в Excel Interop C #

    как получить первую строку и значение столбца из таблицы данных, которые содержат значение из листа excel с использованием c # для создания динамической таблицы на сервере sql

    Простой синтаксический анализ для объекта или переменных, аналогичный XML или CSV

    Как подсчитать количество дубликатов в диапазоне по заданному значению?

    Как я могу получить столбец процентов, когда я собираю большой набор данных в SPSS?

    Excel VBA проверяет содержимое соседних ячеек

    Поместите содержимое нескольких TXT-файлов в Excel 2010

    Метод RefreshAll, вызывающий ERROR в скрипте VB

    Изменить разделители по умолчанию в excel

    Простой поиск списка Использование соответствия (как использовать в чередующихся ячейках)

    Поиск в списке строк с чем-либо в другом списке строк в Excel

    Веб-ссылка API содержит Json, импорт в excel с помощью vba

    PHP. Откройте файл Excel из списка в переключателях / выпадающих меню.

    Давайте будем гением компьютера.