Формулы Excel VBA не вычисляются полностью

У меня есть ячейка переключения, которая кормит вычисления на нескольких листах в моей книге. Цель состоит в том, что всякий раз, когда эта переключающая ячейка изменяется, рабочая книга пересчитывает и предоставляет номер обновления.

У меня включен ручной расчет.

Ниже приведены методы, которые я пробовал (обратите внимание, что код находится в листе)

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.Calculate End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.CalculateFull End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.CalculateFullRebuild End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then range("DI:DI").calculate 'to calculate the specific range which drives the updated numbers End If 

Ни один из этих методов не работает. Единственный способ – сохранить книгу и все вычислить.

Есть предположения?

—————————–РЕДАКТИРОВАТЬ——————– ———

Только решение, которое работает до сих пор, заставляет вычислить все ячейки, которые приводят конечные результаты. Надеемся на более элегантное решение. Общее время выполнения ~ 3сек. \

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Worksheets("Dashboard").Range("af3").Calculate Worksheets("Base").Range("R1:R50000").Calculate Worksheets("Control").Range("R1:R50000").Calculate Worksheets("Base").Range("DI1:DI50000").Calculate Worksheets("Control").Range("DI1:DI50000").Calculate Worksheets("Dashboard").Range("W10:W5000").Calculate Worksheets("Dashboard").Range("L10:L5000").Calculate Worksheets("Dashboard").Range("Y10:Aa5000").Calculate Worksheets("Dashboard").Range("B2:B7").Calculate end if 

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Worksheets("Dashboard").Range("af3").Calculate Worksheets("Base").Range("R1:R50000").Calculate Worksheets("Control").Range("R1:R50000").Calculate Worksheets("Base").Range("DI1:DI50000").Calculate Worksheets("Control").Range("DI1:DI50000").Calculate Worksheets("Dashboard").Range("W10:W5000").Calculate Worksheets("Dashboard").Range("L10:L5000").Calculate Worksheets("Dashboard").Range("Y10:Aa5000").Calculate Worksheets("Dashboard").Range("B2:B7").Calculate end if 

Сила пересчитывает все зависимые диапазоны.

Другие методы могут не работать, поскольку файл большой (~ 30 Мб)

Interesting Posts
Давайте будем гением компьютера.