簡體   English   中英

Excel VBA-在列中查找字符串並在該行中插入數據

[英]Excel VBA - Find string in column and insert data in that row

我試圖弄清楚如何使用excel掃描表中的特定數字,為示例起見,數字為50。 當我的代碼在表中找到數字50時,我想將該行設置為50,並在其右側插入一些用戶定義的文本。 然后,我已經設置了各種各樣的VLOOKUP,MATCH和IFERROR函數,這些函數可以從那里開始工作。 但是我現在有點麻煩。 我正在使用Userform插入數據。 上下文是學生注冊系統,將顯示學生ID,並且當用戶選擇一門課程時,該課程ID將自動分配給該學生。

我使用類似的代碼將數據條目分配給下一個空閑行。 但是我希望這將數據條目分配給特定的行,而不僅僅是下一個空閑的行。 我以前使用的代碼如下。

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(最后一行)循環關閉了表單。 我發現效果很好。

任何幫助將不勝感激!

編輯

這是完成的代碼,所有工作正常,多虧Paul!

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

我發現很難理解您到底在尋找什么。 如果要查找包含值的行,可以使用“查找”功能

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM