I don't see all your code, but my feeling tells me that you don't need second argument at all.

So your code would be like :

Private Sub populateTxtOnEnter(ByVal copy As String)
    Select Case iTable
    Case 1
        MsgBox "ERROR"
        txtClient.Value = copy
        textTicket.SetFocus
    Case 2
        textTicket.Value = copy
        txtProduct1.SetFocus
    Case 3
        txtProduct1.Value = copy
        'txtSize1.SetFocus
    Case 4
        txtSize1.Value = copy
        txtQuantity1.SetFocus
    'Case 5
    'Case 6
    'Case 7
    Case 8
        txtProduct2.Value = copy
        txtSize2.SetFocus
    Case 9
        txtSize2.Value = copy
        txtQuantity2.SetFocus
    'Case 10

    End Select
    
End Sub

Quote Originally Posted by Satsulima View Post
I remember that in java the arguments were local, meaning that they could have any name you want, it wouldnt override. In VBA all variables/arguments variables must be unique?
Yes, same for VBA, but local variables is dominant over global variables. As soon as you exit the sub, the global vars will take place again.