調べてもわからないのでお聞きしたいです

下の処理でtest3まで処理は正常に行われるんですが
mainに戻ったときに型の不一致でエラーが出て止まってしまいます。

Dim WS As Worksheet

Sub main()
Call test3(TEMP_SHEET)
End Sub

Function TEMP_SHEET() As Worksheet
Set TEMP_SHEET = ThisWorkbook.Worksheets("temp")
Set WS = TEMP_SHEET
End Function

Function test3() As Variant
With WS
.Select
.Cells(1, 1) = "test"
End With
End Function