The calling procedure for GetData in class Portfolio ...

Function GetData(strInstrumentType As String) As Variant

... is looking for a string in the function call

The first time (in post #2) , you didn't have one and since it was required, it was not optional

The other error (in post #3) is telling you that you tried to use a string variable (called 'Cash') but that it was never defined (like Dim Cash As String)