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