Can someone explain why this piece of code works

Sub Macro1()
    Dim myVector(2) As Integer
    myVector(0) = 12
    myVector(1) = 41
    myVector(2) = 3
    Call macro2(myVector)
End Sub

Private Sub macro2(ByRef myVector() As Integer)
    Range("C1").Value = myVector(2)
End Sub
But this doesnt:

Sub Macro1()
    Dim myVector(2) As Integer
    myVector(0) = 12
    myVector(1) = 41
    myVector(2) = 3
    Call macro2(myVector)
End Sub

Private Sub macro2(ByRef myVector() As Integer)
    Dim val As Integer
    Set val = myVector(2)
    Range("C1").Value = val
End Sub
I can't figure out how to store a value from the array in a new integer variable!