Как я могу устранить ошибку несоответствия типов, которую я получаю для аргумента, передаваемого в ExchangeRatesCalc (который должен быть строкой)?
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("ExchangeRates[XRT]")) Is Nothing Then
Call ExchangeRatesCalc("ExchangeRates[Currency]")
End If
End If
End Sub
ExchangeRates - это отформатированная таблица; XRT и Валюта - столбцы в таблице. Когда я щелкаю ячейку в XRT, я хочу передать соответствующую валюту в ExchangeRatesCalc, и результат появится в XRT.
Option Explicit
Function ExchangeRatesCalc(DestCur As String) As Variant
' Requires Microsoft WinHTTP Services reference
Dim url As String
' http://quote.yahoo.com/d/quotes.csv?s=XXXYYY=X&f=l1
url = "http://quote.yahoo.com/d/quotes.csv?s=USD" & DestCur & "=X&f=l1"
Dim myHTTP As New WinHttp.WinHttpRequest
myHTTP.Open "GET", url, False
myHTTP.send ""
If myHTTP.StatusText <> "OK" Then GoTo ServerErrorHandler
If Not (WorksheetFunction.IsNumber(myHTTP.responseText)) Then ExchangeRatesCalc = 0
' This is where the error occurs
ExchangeRatesCalc = CDbl(myHTTP.responseText)
Exit Function
ServerErrorHandler:
MsgBox "Error. Could not convert currency"
End Function