Agree the key is understanding Null values,
I learned the hard way (too many times) that even though I'm expecting only text to be delivered to my string variable, somehow a user will delete or the source data will be blank, and the code chokes when a Null value is fed to a string variable.
When deciding to use string vs. variant, ask the question - am I absolutely certain beyond any shadow of a doubt that the only thing that will be delivered to this variable is text, and there's no possibility that it will receive a Null value?
If you're absolutely certain, then you'll probably have no problems with a string. But if the possibility exists that you could receive a Null value, then declare a variant and use code as suggested by saltecho, something like ...
If IsNull(varMyVariable) Then
'Code here to bypass the code that will choke on the null value
Else
'Run the code that will use the text
End If