Как избежать циклической ссылки при обновлении ячейки Excel - PullRequest
0 голосов
/ 03 марта 2010

Я пишу набор функций на С ++, которые могут быть вызваны с помощью Excel. Однако эти функции являются асинхронными, поэтому немедленных возвращаемых значений нет. Как только результат стал доступен, я использовал функцию обратного вызова через VBA, которая обновляет результат до соответствующей ячейки, которая вызывала функции.

Но здесь у меня проблема с циклическим вызовом функции, потому что при обновлении ячейки. Excel автоматически вызывает исходную функцию еще раз. Пожалуйста, помогите мне обойти эту проблему

Спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Не зная больше о потоке данных вашей программы, невозможно ответить подробно. Когда вызываются функции c ++, какие данные передаются им и когда вы обновляете соответствующую ячейку?

Независимо от того, как вы вызываете функции C ++? Если это через VBA, попробуйте отключить автоматический расчет:

MyWorkSheet.EnableCalculation = False

, а затем снова включить его в конце обратного вызова:

MyWorkSheet.EnableCalculation = True
0 голосов
/ 06 мая 2010

Лучше, если вы можете поместить пример кода, объясняющий, что именно вы пытаетесь сделать.

что вы подразумеваете под

передать текущую ссылку на ячейку

если мое понимание верно, вы пытаетесь передать возвращаемое значение функции самой функции снова. Это круговая ссылка. потому что, когда функция возвращает значение, значение ячейки обновляется, что приводит к повторной оценке любой функции, которая имеет обновленную ссылку на ячейку в качестве входного параметра, в результате чего ваша функция вызывается в цикле!

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