I would recommend a more direct approach, there's no need to call a separate function for each variable, and it appears things are getting confusing by trying. Just collect the information directly in the main macro:
'Note, Type:=1 is numeric, Type:=2 is string
Do
sfirstname = Application.InputBox("Enter First Name", "First Name", Type:=2)
If Len(sfirstname) > 0 Then Exit Do
Loop
Do
sLastname = Application.InputBox("Enter Last Name", "Last Name", Type:=2)
If Len(sLastname) > 0 Then Exit Do
Loop
Do
sClientName = Application.InputBox("Enter Client Name", "Client Name", Type:=2)
If Len(sClientName) > 0 Then Exit Do
Loop
Do
sPayRate = Application.InputBox("Enter Candidate Pay Rate", "Pay Rate", Type:=1)
If Len(sPayRate) > 0 Then Exit Do
Loop
Do
sBillRate = Application.InputBox("Enter Candidate Billing Rate", "Bill Rate", Type:=1)
If Len(sBillRate) > 0 Then Exit Do
Loop
Do
sEmployStatus = Application.InputBox("Enter Employment Status", "Status", Type:=2)
If Len(sEmployStatus) > 0 Then Exit Do
Loop
Do
sSplitPercent = Application.InputBox("Enter Split Percentage", "Status", Type:=1)
If Len(sSplitPercent) > 0 Then Exit Do
Loop
Set NewCandProfile = New CTempCandidate
NewCandProfile.sfirstname = sfirstname
NewCandProfile.sLastname = sLastname
NewCandProfile.sClientName = sClientName
NewCandProfile.sCandPayRate = sPayRate
NewCandProfile.sCandBillRate = sBillRate
NewCandProfile.sEmployStatus = sEmployStatus
NewCandProfile.sSplitPercent = sSplitPercent
Bookmarks