I have the ff. test code, could anyone point out what's happening here? Why is the passed Collection acting like it was passed ByRef?

VB Code:
  1. Private Sub Command1_Click()
  2.     Dim a               As Long
  3.     Dim CollectionTest  As New Collection
  4.     Dim StringTest      As String
  5.    
  6.     CollectionTest.Add "Data1"
  7.     CollectionTest.Add "Data2"
  8.    
  9.     ' Loop before passing to test contents
  10.     For a = 1 To CollectionTest.Count
  11.         MsgBox CollectionTest(a)
  12.     Next
  13.     ' Pass it as ByVal
  14.     TestByVal CollectionTest
  15.     ' The newly added value can be seen here
  16.     For a = 1 To CollectionTest.Count
  17.         MsgBox CollectionTest(a)
  18.     Next
  19.    
  20.     StringTest = " Not passed yet "
  21.     MsgBox StringTest
  22.     TestAnotherByVal StringTest
  23.     MsgBox StringTest
  24. End Sub
  25.  
  26. Private Sub TestByVal(ByVal c As Collection)
  27.     c.Add "Data3 - Created by ByVal"
  28. End Sub
  29.  
  30. Private Sub TestAnotherByVal(ByVal s As String)
  31.     s = s & " was passed ByVal "
  32. End Sub