Ngu's answer is most likely the problem. 
Specifically, remember that Structures can have constructors. If you haven't written one for your pcStruct structure, you might want to consider it:
Public Structure pcStruct
   Private thisMessage As String
   Private thisList as ArrayList
   Public Sub New()
      thisList = New ArrayList()
   End Sub 
   Public Property stra As ArrayList
      Get
         Return thisList
      End Get
   End Property
   Public Property Message As String
      Get
         Return thisMessage
      End Get
      Set
         thisMessage = Value
      End Set
   End Property
End Structure
Some argue that it's not necessary to do this in the constructor, but that you should simply do it where the member variable is declared. There's some evidence that this performs better, but I would argue that this will depend on how many of these objects you're declaring. If you're not declaring vast amounts of them, the performance benefit does not outweigh the clarity and extensibility benefit of placing your initialization code in one place. But, as must be pointed out, that is entirely my opinion and must be taken with both a grain of salt and an air freshener.