私はグーグルで多くのことを行っていますが、私が間違っていることを理解することはできません。関数内でafサブ関数を呼び出す際の問題
Public Sub ConnectToBloomberg(Code)
Dim sUrl As String
Dim rawJson As Dictionary
Dim pricedata As Object
Dim dataRequest As WinHttp.WinHttpRequest
sUrl = "http://www.bloomberg.com/markets/api/bulk-time-series/price/" & Code & "?timeFrame=1_YEAR"
Set dataRequest = New WinHttp.WinHttpRequest
With dataRequest
.Open "GET", sUrl, True
.Send
.WaitForResponse
FetchedData = .ResponseText
End With
FetchedData = Right(FetchedData, Len(FetchedData) - 1)
FetchedData = Left(FetchedData, Len(FetchedData) - 1)
Set Json = JsonConverter.ParseJson(FetchedData)
Set pricedata = Json.Item("price")
End Sub
Function MEANVALUE() As Double
ConnectToBloomberg (Code)
For Each Item In pricedata
Count = Count + 1
YReturn = Item("value") - LastPrice
LastPrice = Item("value")
Total = Total + YReturn
Next
Mean = Total/Count
MEANVALUE = Mean
End Function
問題は、私がSubを呼び出そうとする2番目の関数にあるはずです。
私はVBAのかなりのnoobieです! :-)
私は間違っていますか?
ありがとうございます!
別の方法で説明します。
Function MEANVALUE(Code) As Double
Dim sUrl As String
Dim rawJson As Dictionary
Dim pricedata As Object
Dim dataRequest As WinHttp.WinHttpRequest
sUrl = "http://www.bloomberg.com/markets/api/bulk-time-series/price/" & Code & "?timeFrame=1_YEAR"
Set dataRequest = New WinHttp.WinHttpRequest
With dataRequest
.Open "GET", sUrl, True
.Send
.WaitForResponse
FetchedData = .ResponseText
End With
FetchedData = Right(FetchedData, Len(FetchedData) - 1)
FetchedData = Left(FetchedData, Len(FetchedData) - 1)
Set Json = JsonConverter.ParseJson(FetchedData)
Set pricedata = Json.Item("price")
For Each Item In pricedata
Count = Count + 1
YReturn = Item("value") - LastPrice
LastPrice = Item("value")
Total = Total + YReturn
Next
Mean = Total/Count
MEANVALUE = Mean
End Function
をしかし、私は他の関数でこのコードを使用しています:このコードは、実際に動作する
Dim sUrl As String
Dim rawJson As Dictionary
Dim pricedata As Object
Dim dataRequest As WinHttp.WinHttpRequest
sUrl = "http://www.bloomberg.com/markets/api/bulk-time-series/price/" & Code & "?timeFrame=1_YEAR"
Set dataRequest = New WinHttp.WinHttpRequest
With dataRequest
.Open "GET", sUrl, True
.Send
.WaitForResponse
FetchedData = .ResponseText
End With
FetchedData = Right(FetchedData, Len(FetchedData) - 1)
FetchedData = Left(FetchedData, Len(FetchedData) - 1)
Set Json = JsonConverter.ParseJson(FetchedData)
Set pricedata = Json.Item("price")
だから私は代わりに、各機能に手動でコードを使用するのではなく、それを呼び出すことができるようにしたいです。
(a)はどのようなコードを、あなたは関数を呼び出すために使用して、またはそれはUDFでいますか? (b)関数では、決して値を割り当てていない変数 'Code'を使用しています。また値を割り当てたことのない 'pricedata'という変数も使用しています。 (c)あなたのサブは、多くの仕事をしていますが、実際にはその仕事の結果で何もしていません - ちょうどそれをいくつかの一時的な値に割り当ててから終了します。 (おそらく、その一時変数をSubという関数に戻すことを意味していたでしょうか?) – YowE3K
(d)本当にこの質問に "su"タグを付けるつもりでしたか? – YowE3K
私はWorkbook = MEANVALUE(C3)の関数を呼び出しています。 関数は実際に私がサブプロシージャから手動でティル関数にコードを追加したときに前に働いていましたが、何度もそのコードを使用しています。 –