2010-03-03 4 views
0

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

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

Спасибо

ответ

1

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

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

MyWorkSheet.EnableCalculation = False 

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

MyWorkSheet.EnableCalculation = True 
0

Это лучше, если вы можете поместить образец кода объяснения что вы точно пытаетесь сделать.

что вы имеете в виду

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

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

Смежные вопросы