Helo!
What's beyond strings, numbers in generaly what relate to variables is the memory. each time you declare a variavle with "private ss as string" you are creating memory space for that variable and having in return the frist place in memory where you ( via program and via os) are going to put your data.
When you say that a=b ( just that) you are saying that the frist place of a is going to be the same as the first place of b.
But if you say in Sub LastError for exemple:
Public Sub LastError As String
Dim sTemp As String
sTemp=sErrorMessage.SubString(0)
sErrorMessage=""
Return sTemp
End Sub
then you are creating a new place where to put your data and adicionaly with that sTemp=sErrorMessage.SubString(0) you are in fact copying your data to that new place.
From now on, you will have two places in memory in which you have the same data.
it's more or less what the pendrsuh answer is also...