The value you're trying to deserialize doesn't match the JSON you've shown.
To deserialize that JSON, your classes need to look like:
Public Class Root
<JsonProperty("@odata.context")> _
Public Property OdataContext As Uri
<JsonProperty("value")> _
Public Property Value As Value()
End Class
Public Class Value
<JsonProperty("cotacaoVenda")> _
Public Property CotacaoVenda As Decimal
End Class
Dim list As Root = JsonConvert.DeserializeObject(Of Root)(ProdutoJsonString)
If list Is Nothing OrElse list.Value Is Nothing OrElse list.Value.Length = 0 Then
MsgBox("Invalid JSON data returned")
Else
MsgBox(list.Value(0).cotacaoVenda)
End