Я пытаюсь вернуть значение из моего кода. Это гораздо проще просто показать код:Не удается вернуть значение из функции VBA
Function writeHeaderData() As IXMLDOMNode
Dim xmlDoc As New MSXML2.DOMDocument30
xmlDoc.async = False
xmlDoc.LoadXML "<Foo></Foo>"
Dim Foo As IXMLDOMNode
Set Foo = xmlDoc.DocumentElement
'code snip; includes appending lots of things to Foo
'the error is on this line:
writeHeaderData = Foo
Exit Function
End Function
Я уже Google искал, но это было ни к чему. Эта функция вызывается из основной подпрограммы, и я пытаюсь добавить возвращенную IXMLDOMNode к большей один, но я получаю сообщение "ошибка "Object variable or With block variable not set
на writeHeaderData = Foo
линии. Что здесь?
Отлично! Это очень * необычно, поскольку я подозреваю, что если я верну переменную, которая уже имеет имя, она будет в области/инициализирована. Спасибо, сэр. – chrisdotcode
Переменная writeHeaderData находится в области видимости и инициализирована, но ее объект и VBA говорят, что вам всегда нужно использовать Set для назначения объекту: исключений не допускается. –
Вы собираетесь получить несоответствие типа даже с помощью инструкции Set. Ваша функция возвращает XMLDoc, но Foo - это XMLDOMNode. –