2013-02-18 3 views
0

Я работаю над проектом excel на уровне документа. Это третья версия.Excel C# Issue - формула не пересчитывается

Один из рабочих листов содержит объект списка (данные, передаваемые из базы данных). Тогда есть клетки содержат формулы, такие как следующего

this.Range [ "F15"]. Формула = "= COUNTIFS (HotList_ListObject [продукт], Е15, HotList_ListObject [Got_Interest], \" <> \ ")"

ранее, я создал таблицу просто перетащить. затем просто создала формулу в листах. и формулы были пересчитаны как данные в listobject (HotList_ListObject выше).

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

Я просмотрел интернет и сделал пару тестов.

Когда я нажимаю F9, SHIFT + F9 и CTRL + ALT + F9, он не пересчитывается.

только при нажатии CTRL + SHIFT + ALT + F9, он пересчитывает

explantion я нашел для CTRL + SHIFT + ALT + F9 является

перепроверяет зависимые формулы, а затем вычисляет все формулы во всех открытые книги, независимо от того, изменились ли они с прошлого момента или нет.

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

Мои пользователи не будут нажимать кнопку каждый раз, когда они изменяют/добавляют/удаляют записи в списке.

Что я могу сделать, чтобы решить эту проблему? Как сказать Excel, что формулам нужно пересчитывать каждый раз, что-то меняется в списке.

Спасибо за любой совет заранее!

Сердечные приветы Марк

+0

Как вы покончили с этим в конце? Удалось ли вам это решить? –

ответ

1

ли установка Расчет Вручную:

xlApp.Calculation = XlCalculation.xlCalculationManual; 
xlApp.ScreenUpdating = false; 
xlApp.DisplayAlerts = false; 
xlApp.UserControl = false; 
xlApp.EnableEvents = false; 

Тогда заселять ваш Hotlist_ListObject (то есть не на листе до запуска приложения и) затем установить расчет на автоматический :

xlApp.Calculation = XlCalculation.xlCalculationAutomatic; 
xlApp.ScreenUpdating = true; 
xlApp.DisplayAlerts = true; 
xlApp.UserControl = true; 
xlApp.EnableEvents = true; 

Устранить проблему? Если бы вы не могли опубликовать какой-то код костей, чтобы проиллюстрировать проблему.

+0

+ 1 Я также чувствую, что это настройка расчета, которая создает эту проблему. –

+0

Нет, это не решает проблему. – HeinrichStack

+0

@HeinrichStack это был вопрос от Марка. Я не знаю, какую проблему он не решает для вас. Возможно, вам нужно задать «Новый вопрос», нажав кнопку в правом верхнем углу страницы. –

0

Вы проверили настройки параметров? Это можно сбрасывать вручную с помощью макроса (проверьте с помощью редактора макросов, используя Alt + F11 для xlCalculateManual и убедитесь, что макрос не остановлен до того, как будет выполнено Application.Calculation = xlCalculationAutomatic для автоматического возврата калакаций. метод для ускорения макросов, но когда макрос выйдет на полпути, этот ручной расчет будет оставлен.

Вот ручная настройка.

enter image description here

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