Actualizați rezultatele funcției Excel VBA

Știe cineva cum pot obține o funcție definită de utilizator care să se reevalueze (bazată pe datele modificate din foaia de calcul)? Am încercat F9 și Shift + F9 . muncă. Singurul lucru care pare să funcționeze este editarea celulei cu apelul pentru funcții și apoi apăsarea tastei Enter. Vreo idee? Îmi amintesc că pot să fac asta ...

0
fr hi bn

7 răspunsuri

Ar trebui să utilizați Application.Volatile în partea superioară a funcției:

Function doubleMe(d)
    Application.Volatile
    doubleMe = d * 2
End Function

Acesta va reevalua atunci când se modifică registrul de lucru (dacă calculul dvs. este setat automat).

0
adăugat
@airstrike Sunteți bineveniți
adăugat autor vzczc, sursa
@mdm Vă mulțumim pentru informații despre True! A fost nevoie și de acest lucru pentru o funcție personalizată de lucru în Excel 2013 !!
adăugat autor timbram, sursa
Multumesc. TU. V-aș cumpăra bere dacă aș putea!
adăugat autor Andy Terra, sursa
acest lucru funcționează atunci când schimba valoarea unei celule, dar am o funcție care sumează celulele pe baza culorii de umplere și aceasta nu actualizează funcția când schimb culoarea celulei de umplere, trebuie să reintroduc valoarea. pot actualiza live foaia de lucru pe măsură ce schimb Fill Color?
adăugat autor Chris M, sursa
Mulțumesc, tocmai mi-am băgat capul într-un birou peste asta. Ar trebui să subliniez că, deși în Excel 2010, trebuie să treci True la Application.Volatile, adică Application.Volatile True .
adăugat autor mdm, sursa
E minunat, nu știam asta, mulțumesc o grămadă
adăugat autor Matthew Rathbone, sursa

Bine, am găsit-o eu pe mine. Puteți folosi Ctrl + Alt + F9 pentru a realiza acest lucru.

0
adăugat
Aceasta este singura opțiune dacă aveți Excel 2007 văzută ca metoda Application.Volatile a fost adăugată în Office 2010.
adăugat autor Twisty Impersonator, sursa

Mai multe informații despre comenzile rapide de la tastatură F9 pentru calcul în Excel

  • F9 Recalculates all worksheets in all open workbooks
  • Shift+ F9 Recalculates the active worksheet
  • Ctrl+Alt+ F9 Recalculates all worksheets in all open workbooks (Full recalculation)
  • Shift + Ctrl+Alt+ F9 Rebuilds the dependency tree and does a full recalculation
0
adăugat
Public Sub UpdateMyFunctions()
    Dim myRange As Range
    Dim rng As Range

    'Considering The Functions are in Range A1:B10
    Set myRange = ActiveSheet.Range("A1:B10")

    For Each rng In myRange
        rng.Formula = rng.Formula
    Next
End Sub
0
adăugat
Vă rugăm să explicați puțin codul. Aceasta ar crește foarte mult utilitatea.
adăugat autor Trilarion, sursa
rng.Formula = rng.Formula este aceeași cu introducerea unei celule și apăsarea din nou a tastei enter. Îi forțează Excel să calculeze din nou celula - inclusiv orice funcții personalizate.
adăugat autor Sam V, sursa

Pentru a comuta la Automat:

Application.Calculation = xlCalculationAutomatic    

Pentru a comuta la Manual:

Application.Calculation = xlCalculationManual    
0
adăugat
De ce coboară? funcționează de fapt!
adăugat autor Tuscan, sursa
Mulțumesc. a lucrat și pentru mine
adăugat autor ayman, sursa

Funcționează bine acest lucru pentru a reîmprospăta calculul mai bine decât intervalul (A: B). Calculați

Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range

'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")

For Each rng In myRange
    rng.Formula = rng.Formula
Next
End Sub
0
adăugat

The Application.Volatile doesn't work for recalculating a formula with my own function inside. I use the following function: Application.CalculateFull

0
adăugat