Я пытаюсь выяснить, как использовать excel для сканирования таблицы для определенного номера, например, номер 50 для примера. Когда мой код находит число 50 в таблице, я хочу установить эту строку, где находится 50, и вставить некоторый пользовательский текст справа от него. Затем у меня есть всевозможные функции VLOOKUP, MATCH и IFERROR, которые уже установлены, что будет работать оттуда. Но на данный момент у меня проблемы. Я использую Userform для вставки данных. Контекст - это система регистрации учащихся, идентификатор студента будет присутствовать, и когда пользователь выбирает курс, идентификатор курса автоматически присваивается указанному учащемуся.Excel VBA - найти строку в столбце и вставить данные в эту строку
Я использовал аналогичный код для назначения ввода данных в следующую свободную строку. Но я хочу, чтобы это назначало запись данных определенной строке, а не только следующей свободной. Код, который я использовал ранее, выглядит следующим образом.
Dim LR As Integer, Master As Worksheet Set Master =
ThisWorkbook.Worksheets("Student")
LR = 6
If LR = 6 And Cells(LR, "A").Value = "" Then
LR = LR
Else
LR = LR + 1
If Cells(LR, "A").Value = "" Then
Else
Do Until Cells(LR, "A").Value = ""
LR = LR + 1
Loop
End If
End If
Master.Cells(LR, "A").Value = (Me.txtID)
Master.Cells(LR, "B").Value =(Me.txtFore)
Master.Cells(LR, "C").Value = (Me.txtSur)
Master.Cells(LR, "D").Value = (Me.txtAddress)
Master.Cells(LR, "E").Value = (Me.cmbSex)
Unload UserForm1
Как вы можете видеть, что код успешно присваивает ввод данных в следующей строке, а затем закрывает форму с помощью последней строки() цикл LR. Я обнаружил, что работала неплохо.
Любая помощь была бы принята с благодарностью!
EDIT
Вот готовый код все рабочие, благодаря Павлу!
Dim FR As Integer, Course As Worksheet, CourseCode, StudentID As String
Set Course = ThisWorkbook.Worksheets("Course")
Set Enrol = ThisWorkbook.Worksheets("Enrolment")
StudentID = txtID
CourseCode = cmbCourse
FR = 6
Dim lRow As Long
If FR = 6 And Course.Cells(FR, "B").Value = CourseCode Then
FR = FR
Else
FR = FR + 1
If Course.Cells(FR, "B").Value = CourseCode Then
Else
Do Until Course.Cells(FR, "B").Value = CourseCode
FR = FR + 1
Loop
End If
End If
lRow = Enrol.Range("A6:A45").Find(StudentID).Row
Select Case CourseCode
Case "Animal Care"
CourseCode = "9841"
Case "Animation"
CourseCode = "3320"
Case "Art"
CourseCode = "6387"
Case "Biology"
CourseCode = "4685"
Case "Business Studies"
CourseCode = "5879"
Case "Calculus"
CourseCode = "4123"
Case "Chemistry"
CourseCode = "1586"
Case "Computing"
CourseCode = "3669"
Case "Dance"
CourseCode = "4521"
Case "Design and Tech"
CourseCode = "5478"
Case "Drama"
CourseCode = "5678"
Case "Engineering"
CourseCode = "6321"
Case "English Language"
CourseCode = "4768"
Case "English Literature"
CourseCode = "3908"
Case "Fashion Design"
CourseCode = "2477"
Case "Film Making"
CourseCode = "4489"
Case "French"
CourseCode = "2548"
Case "Functional Skills"
CourseCode = "2685"
Case "Geography"
CourseCode = "8874"
Case "German"
CourseCode = "9512"
Case "Graphic Design"
CourseCode = "5232"
Case "History"
CourseCode = "4895"
Case "Italian"
CourseCode = "6578"
Case "Japenese"
CourseCode = "5988"
Case "Korean"
CourseCode = "9874"
Case "Latin"
CourseCode = "3478"
Case "Law"
CourseCode = "2321"
Case "Mathmatics"
CourseCode = "9458"
Case "Media Studies"
CourseCode = "1589"
Case "Modern Languages"
CourseCode = "5612"
Case "Nursing"
CourseCode = "2003"
Case "Photography"
CourseCode = "2001"
Case "Physical Education"
CourseCode = "8496"
Case "Physics"
CourseCode = "8534"
Case "Religious Studies"
CourseCode = "2320"
Case "Social Studies"
CourseCode = "2301"
Case "Spanish"
CourseCode = "6217"
Case "Statistics"
CourseCode = "4895"
Case "Textiles"
CourseCode = "2240"
Case "Travel and Tourism"
CourseCode = "5698"
End Select
Enrol.Cells(lRow, "E").Value = (CourseCode)
Unload UserForm3
Спасибо, Пол! Это было очень полезно, и теперь мне удалось заставить его работать. Я использовал функцию «Найти», и она отлично работала! Я отправлю готовый код в вопросе выше, чтобы другие видели! –