Hi all!

I am stuck with my userform and am in dire need of help!

I am new to VBA and to this forum so please bear with me.

I am working on a userform that allows data entry and to search and update existing data.

I want to be able to enter a certain number (say a Part Number) in one of the fields and click 'Find' and this will search the database for the Part Number and if found, will populate the rest of the fields of the userform with corresponding data. (I have coded this bit and it works).

However, sometimes there maybe more than one record that matches a particular Part Number. In this case, I want to be able to click on a 'Find Next' button to display the next record for this part number. For example if there are 5 records that matches a certain part number, I want clicking on 'find' to show the first record, clicking on 'find next' to show the second record, clicking on 'find next' to show the 3rd record, etc until it shows all 5 records.

If it is easier, I don't mind merging 'Find' and 'Find Next' to one button as long as it does the same job.

This is the code I have so far. I know the 'Find Next' part is wrong because it doesn't work. I am stuck with this and its holding up quite an urgent project, so any help will be so very much appreciated!

Thank you very, very much in advance.

Private Sub cmdFind_Click()
'Coding the find button

   Dim Rw As String


'Find records when Part number is entered. If record not found, display message box
          
     If Me.txtPartNo.Value <> "" Then
     
     On Error GoTo Error2
    
        Rw = .Range("D:D").Find(Me.txtPartNo.Value, LookIn:=xlValues, LookAt:=xlPart).Row
       
        With Range("A1")
        
        Me.txtNCRNo.Value = .Offset((Rw - 1), 0).Value
        Me.txtRaisedBy.Value = .Offset((Rw - 1), 1).Value
        Me.txtRaisedDate.Value = .Offset((Rw - 1), 2).Value
        Me.txtPartNo.Value = .Offset((Rw - 1), 3).Value
        Me.cboSystem.Value = .Offset((Rw - 1), 4).Value
        Me.cboPartType.Value = .Offset((Rw - 1), 5).Value
        Me.txtWONo.Value = .Offset((Rw - 1), 6).Value
        Me.txtBatchQty.Value = .Offset((Rw - 1), 7).Value
        Me.txtQNo.Value = .Offset((Rw - 1), 8).Value
        Me.cboWhereFound.Value = .Offset((Rw - 1), 9).Value
        Me.cboSource.Value = .Offset((Rw - 1), 10).Value
        Me.cboNCCode.Value = .Offset((Rw - 1), 11).Value
        Me.cboNCSubCat.Value = .Offset((Rw - 1), 12).Value
        Me.txtDetails.Value = .Offset((Rw - 1), 13).Value
        Me.txtReworkQty.Value = .Offset((Rw - 1), 14).Value
        Me.txtScrapQty.Value = .Offset((Rw - 1), 15).Value
        Me.txtAcceptedQty.Value = .Offset((Rw - 1), 16).Value
        Me.txtQtyConcession.Value = .Offset((Rw - 1), 17).Value
        Me.txtQtySupplier.Value = .Offset((Rw - 1), 18).Value
        Me.txtSplitBatch.Value = .Offset((Rw - 1), 19).Value
        Me.txtCost.Value = .Offset((Rw - 1), 23).Value
        Me.cboQADis.Value = .Offset((Rw - 1), 24).Value
        Me.cboManDis.Value = .Offset((Rw - 1), 25).Value
        Me.txtDateIssued.Value = .Offset((Rw - 1), 26).Value
        
        If .Offset((Rw - 1), 16).Value <> 0 Then
            Me.txtRationale.Value = .Offset((Rw - 1), 21).Value
        End If
        
        If .Offset((Rw - 1), 17).Value <> 0 Then
            Me.txtConNo.Value = .Offset((Rw - 1), 21).Value
        End If
        
        If .Offset((Rw - 1), 18).Value <> o Then
            Me.txtGRNNo.Value = .Offset((Rw - 1), 21).Value
        End If
        
        If .Offset((Rw - 1), 19).Value <> 0 Then
            Me.txtSplitBatchNo.Value = .Offset((Rw - 1), 21).Value
        End If
            
        .Offset((Rw - 1), 0).Select
        End With
            
        Exit Sub
        
Error2:
   
        MsgBox "Part number not found on records. Please complete a new record for this NCR.", vbOKOnly, "NCR Data Entry"
        Me.txtNCRNo.SetFocus
        Exit Sub
        
        End If

End Sub






  Private Sub cmdNext_Click()
With Worksheets("NCR")

'Find next record if Part number is entered

C = .Range("D:D").Find(Me.txtPartNo.Value, After:=Cells((Rw - 1), 3), LookIn:=x1Values, LookAt:=x1Part)

currow = C.Row

With Range("A1")
        
        Me.txtNCRNo.Value = .Offset((currow - 1), 0).Value
        Me.txtRaisedBy.Value = .Offset((currow - 1), 1).Value
        Me.txtRaisedDate.Value = .Offset((currow - 1), 2).Value
        Me.txtPartNo.Value = .Offset((currow - 1), 3).Value
        Me.cboSystem.Value = .Offset((currow - 1), 4).Value
        Me.cboPartType.Value = .Offset((currow - 1), 5).Value
        Me.txtWONo.Value = .Offset((currow - 1), 6).Value
        Me.txtBatchQty.Value = .Offset((currow - 1), 7).Value
        Me.txtQNo.Value = .Offset((currow - 1), 8).Value
        Me.cboWhereFound.Value = .Offset((currow - 1), 9).Value
        Me.cboSource.Value = .Offset((currow - 1), 10).Value
        Me.cboNCCode.Value = .Offset((currow - 1), 11).Value
        Me.cboNCSubCat.Value = .Offset((currow - 1), 12).Value
        Me.txtDetails.Value = .Offset((currow - 1), 13).Value
        Me.txtReworkQty.Value = .Offset((currow - 1), 14).Value
        Me.txtScrapQty.Value = .Offset((currow - 1), 15).Value
        Me.txtAcceptedQty.Value = .Offset((currow - 1), 16).Value
        Me.txtQtyConcession.Value = .Offset((currow - 1), 17).Value
        Me.txtQtySupplier.Value = .Offset((currow - 1), 18).Value
        Me.txtSplitBatch.Value = .Offset((currow - 1), 19).Value
        Me.txtCost.Value = .Offset((currow - 1), 23).Value
        Me.cboQADis.Value = .Offset((currow - 1), 24).Value
        Me.cboManDis.Value = .Offset((currow - 1), 25).Value
        Me.txtDateIssued.Value = .Offset((currow - 1), 26).Value
        
        If .Offset((currow - 1), 16).Value <> 0 Then
            Me.txtRationale.Value = .Offset((currow - 1), 21).Value
        End If
        
        If .Offset((currow - 1), 17).Value <> 0 Then
            Me.txtConNo.Value = .Offset((currow - 1), 21).Value
        End If
        
        If .Offset((currow - 1), 18).Value <> o Then
            Me.txtGRNNo.Value = .Offset((currow - 1), 21).Value
        End If
        
        If .Offset((currow - 1), 19).Value <> 0 Then
            Me.txtSplitBatchNo.Value = .Offset((currow - 1), 21).Value
        End If
            
        .Offset((currow - 1), 0).Select
        End With
    

    Set R1 = currow
    
End With

End Sub