I was doing some more playing around with this and came up with some code which I believe may work for you.

I'm guessing you are trying to return the total accumulated amount for either James or John? If this is the case then it seems you would want to use a Sumif function versus the Vlookup which will only return one result, not a total.

So here a two pieces of code to use.

The first uses advanced filter to make a unique list for the combobox and the second will populate textbox1 on change of combobox1. Unique list will be created in column L.

I figured using the code provided you could probably figure out how to add to the code for the second textbox.

This is just one way to do it, but I'm sure if you poked around more you could find others. I hope this helps.

Private Sub UserForm_Initialize()
    With Sheet1
        .Range(.Range("E3"), .Range("E" & .Rows.Count).End(xlUp)) _
        .AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("L3"), Unique:=True
        ComboBox1.List = .Range(.Cells(4, 12), .Cells(.Rows.Count, 12).End(xlUp)).Value
    End With
    Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
    Dim CL As Range
    Dim AA As Range
    Dim CLR As String
    With Sheet1
        Set CL = .Range("E4", .Cells(.Rows.Count, "E").End(xlUp))
        Set AA = .Range("J4", .Cells(.Rows.Count, "J").End(xlUp))
        Frm1 = Application.WorksheetFunction.SumIf(CL, ComboBox1, AA)
        frmMain.TextBox1 = Frm1
    End With
End Sub