У меня есть UDF, который я написал и вставил в надстройку. Я поместил его туда (вместе с библиотекой других), чтобы я мог изменять функции и просто развертывать обновленную надстройку, тем самым устраняя необходимость изменять сотни рабочих книг, которые вызывают подпрограммы / функции, в случае необходимости их изменения. Все это делается в Office 2007.
Это работало хорошо до недавнего времени, когда пользователи начали переходить на Windows 7. Теперь только в Windows 7 (с XP все еще в порядке) в ячейках появляются ошибки #Name. Это происходит при определенных условиях (проблема только для сценария D ниже). Короче говоря, у меня есть две рабочие книги, каждая из которых вызывает, давайте назовем это «FunctionX», поэтому, скажем, ячейка A1 каждой имеет «= FunctionX (parmA, parmB)»:
Scenairo A - Если я открою любую книгу отдельно (Все хорошо)
Сценарий B - я открываю обе книги одновременно (все хорошо)
Сценарий C - я открываю обе книги по отдельности, одну за другой, в разных случаях (все хорошо)
Сценарий D - я открываю одну книгу, затем вторую, в том же экземпляре Excel (# Имя ошибки в ячейках первой книги, вызывающей FunctionX)
Я понимаю, что обходной путь - это работать только через Scenarios AC, однако я продолжаю получать жалобы пользователей на D. Если они обращаются к любому вызову FunctionX в ячейках, нарушающих #Name, и нажимают enter, #Names исчезают, но программный принудительный пересчет не делает этого (моя первоначальная попытка лейкопластыря). Является ли мое единственное средство для написания процедуры, которая перебирает все открытые рабочие книги, входит в ячейку с моей функцией, заставляя вводить в действие код на основе того, что делает пользователь, или я что-то упускаю?
Спасибо ... любой / все советы приветствуются.