Как реализовать Application.Caller в публичной функции - PullRequest
0 голосов
/ 21 мая 2018

Приведенная ниже функция принимает значение в столбце F (тикер валюты) и возвращает выходные данные функции (эквивалент ввода в 20 долларов США) в столбце H.

Проблема заключается в том, что уравнение не обновляетзначение в столбце F при перетаскивании уравнения вниз по столбцу H (начиная с H2).

Пример: H2 = Oanda (F2)
Когда я перетаскиваю это вниз (скажем, к F10), уравнение дает мне вывод для Oanda (F2) независимо от того, какое значение имеет для F3-F10.Мне нужна помощь в реализации функции Application.Caller здесь.

Option Explicit

Public Function Oanda(ConvertWhat As String)

'References
'   Microsoft XML, vs.0
'   Microsoft Internet Controls
'   Microsoft HTML Object Library

Dim Conversion As String
Conversion = ThisWorkbook.Sheets("Employee").Range("F" & ActiveCell.Row).Value2

Dim IE As New InternetExplorer
'IE.Visible = True
IE.Navigate "https://www.oanda.com/currency/converter?quote_currency=USD&base_currency=" & Conversion

Do
    DoEvents
Loop Until IE.ReadyState = ReadyState_Complete
Dim Doc As HTMLDocument
Set Doc = IE.Document
Dim Ans As String
Ans = Trim(Doc.getElementsByTagName("tbody")(2).innerText)
Dim AnsExtract As Variant
AnsExtract = Split(Ans, " ")

Oanda = AnsExtract(4) * 20

End Function

1 Ответ

0 голосов
/ 21 мая 2018

Использовать переменную, передаваемую в функцию

Option Explicit

Public Function Oanda(ByVal ConvertWhat As String) As Double

    'References
    '   Microsoft XML, vs.0
    '   Microsoft Internet Controls
    '   Microsoft HTML Object Library
    Dim IE As New InternetExplorer
    'IE.Visible = True
    IE.Navigate "https://www.oanda.com/currency/converter?quote_currency=USD&base_currency=" & ConvertWhat

    Do
        DoEvents
    Loop Until IE.ReadyState = ReadyState_Complete
    Dim Doc As HTMLDocument
    Set Doc = IE.Document
    Dim Ans As String
    Ans = Trim$(Doc.getElementsByTagName("tbody")(2).innerText)
    Dim AnsExtract As Variant
    AnsExtract = Split(Ans, " ")

    Oanda = AnsExtract(4) * 20

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...