Код VBA, работающий в одной книге, но не в другой

#excel #vba

#excel #vba

Вопрос:

Я использую код в книге, но я делаю новый проект, я хочу повторно использовать код, я копирую и вставляю его. Но у меня есть это сообщение об ошибке :

Не найден метод или элемент данных

Код выглядит следующим образом, и он выделяет это :

ставки.Добавьте преобразование.Val(node.getAttribute(«курс»)), node.getAttribute(«валюта»)

Я не понимаю, почему значение val выделено в моей новой книге, но не в моей предыдущей.

Я прошу вашей помощи 🙂

 Public Function ConvCurrency(Value As Double, fromSymbol As String, toSymbol As String)
 
  Static rates As Collection, expiration As Date  ' cached / keeps the value between calls '

    If fromSymbol = "SAR" Then
        ConvCurrency = Value * 0.2
    
    Else:

        If DateTime.Now > expiration Then
            Dim xhr As Object, node As Object
            expiration = DateTime.Now   DateTime.TimeSerial(1, 0, 0) '   1 hour '

            Set rates = New Collection
            rates.Add 1#, "EUR"
   
            Set xhr = CreateObject("msxml2.xmlhttp")
    
            xhr.Open "GET", "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", False
            xhr.send
 
            For Each node In xhr.responseXML.SelectNodes("//*[@rate]")
                rates.Add Conversion.Val(node.getAttribute("rate")), node.getAttribute("currency")
            Next
        End If

        ConvCurrency = (Value / rates(fromSymbol)) * rates(toSymbol)
  End If
End Function
 

Комментарии:

1. Что произойдет, если вы используете VBA.Conversion.Val ?

2. Спасибо, БигБен, это работает. Не могли бы вы объяснить мне, чего мне не хватало. Раньше это работало, и теперь мне нужно использовать VBA. Почему это так?

3. Что-то еще (другая библиотека, возможно, один из ваших модулей) затеняет Conversion … обычно используется только один Val , или вы можете использовать весь VBA.Conversion.Val .