You're getting an error 1004 when the vlookup fails to find a match. When you have On Error Resume Next active it just ignores that line, but it doesn't change the value of thevalue.
One thing you can do is keep the On Error Resume Next active and reset the contents of thevalue (say to an empty string or a message) within the loop just before doing the vlookup:
For i = 2 To 11
thevalue = "not found"
thevalue = Application.WorksheetFunction.VLookup(wsLookup.Cells(i, 2), wsSource.Range("B:C"), 2, False)
Debug.Print thevalue
Next
A different solution could be to change Dim thevalue As String to just Dim thevalue which will allow thevalue to contain other things than just a string (specifically, an error) and change:
Application.WorkSheetFunction.VLookup
to just:
Application.VLookup
(it behaves differently when an error is thrown; it puts an error into thevalue),
remove the On Error Resume Next
and test thevalue for being an error with If IsError(thevalue) Then, leaving you with something along the lines of:
Sub mylookup()
Dim thevalue
Dim wsLookup, wsSource As Worksheet
Dim sourceLastRow, lookupLastRow As Long
Dim i As Long
Set wsLookup = ThisWorkbook.Worksheets("Lookup")
Set wsSource = ThisWorkbook.Worksheets("Source")
For i = 2 To 11
thevalue = Application.VLookup(wsLookup.Cells(i, 2), wsSource.Range("B:C"), 2, False)
If IsError(thevalue) Then
Debug.Print thevalue;
Debug.Print ", ]" & wsLookup.Cells(i, 2) & "[ was not found"
Else
Debug.Print thevalue
End If
Next
End Sub