So evidently it looks like even though you use Set LastWS = ActiveSheet in the other deactivate events for other sheets.. it seems the value is not being stored? Because if I use the following code it works.

Private Sub Worksheet_Activate()
Set LastWS = Sheet3
MsgBox LastWS.CodeName
Sheet1.Range("A3").Value = LastWS.Range("A3").Value
End Sub