Excel VBA:Beta检索function不工作在我的子

我已经修改了现有的一段代码,以便从reuters.com检索法国股票的Beta值。 当我在电子表格中使用它时,函数似乎正在工作(例如,在单元格A3中使用EDF.PA时,getbeta(A3)= getbeta(A3)。

'Beta Function. Posted by mybeam on http://www.mrexcel.com/forum/excel-questions/780746-excel-how-pull-beta-stock-yahoo-finance.html Function GetBeta(ByVal trange As Range) As Single Dim xHttp As Object Dim t, Ticker As String Set xHttp = CreateObject("Microsoft.XMLHTTP") Ticker = trange.Text xHttp.Open "GET", "http://www.reuters.com/finance/stocks/overview?symbol=" & Ticker, False xHttp.Send t = xHttp.responseText t = Mid(t, InStr(t, ">Beta:<") + 1) t = Mid(t, InStr(t, ">") + 1) t = Mid(t, InStr(t, ">") + 1) t = Mid(t, InStr(t, ">") + 1) GetBeta = Val(Left(t, InStr(t, "<") - 1)) End Function 

不过,我现在想用这个函数作为sub的一部分。 不幸的是下面的代码不起作用。 看来,我有问题的variables/对象。

 Private Sub CommandButton4_Click() Dim Beta As Double Dim Ticker_A As Range Select Case Userform1.ComboBox_D.Value Case "ACCOR" Ticker_A = "AC.PA" Case "ELECTRICITE DE FRANCE" Ticker_A = "EDF.PA" Beta = GetBeta(Range(Ticker_A)) MsgBox Beta End Sub 

我疯了几乎没有变化。 而不是范围,你可能想把它设置为string,也把结束select

 Private Sub CommandButton4_Click() Dim Beta As Double Dim Ticker_A As String Select Case UserForm1.ComboBox_D.Value Case "ACCOR" Ticker_A = "AC.PA" Case "ELECTRICITE DE FRANCE" Ticker_A = "EDF.PA" End Select Beta = GetBeta(Ticker_A) MsgBox Beta End Sub Public Function GetBeta(trange As String) As Single Dim xHttp As Object Dim t, Ticker As String Set xHttp = CreateObject("Microsoft.XMLHTTP") Ticker = trange xHttp.Open "GET", "http://www.reuters.com/finance/stocks/overview?symbol=" & Ticker, False xHttp.Send t = xHttp.responseText t = Mid(t, InStr(t, ">Beta:<") + 1) t = Mid(t, InStr(t, ">") + 1) t = Mid(t, InStr(t, ">") + 1) t = Mid(t, InStr(t, ">") + 1) GetBeta = Val(Left(t, InStr(t, "<") - 1)) End Function 

我认为你有一个variablestypes的问题。 在你最初的情况下, trange显然是一个范围。 转换为Sub后,将文本加载到Ticker_A ,在调用GetBeta函数时将其用作范围地址。

只要您的表格中有“AC.PA”和“EDF.PA”范围,我就怀疑了。 因此,您可能需要将GetBeta函数的参数types更改为string,而不是局部variablesTicker