2015-01-22 4 views
0

Я пытаюсь выяснить, как использовать 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 

ответ

1

Мне сложно понять, что именно вы ищете. Если вы хотите найти строку, в которой есть значение, вы можете использовать функцию «Найти»

Dim lRow As Long 
lRow = Course.Range("A1:A1000").Find(StudentID).Row 
+0

Спасибо, Пол! Это было очень полезно, и теперь мне удалось заставить его работать. Я использовал функцию «Найти», и она отлично работала! Я отправлю готовый код в вопросе выше, чтобы другие видели! –