2017-01-20 4 views
3

Meine Countifunktion wenn nicht automatisch berechnet - fehle ich etwas?CountIf berechnet nicht automatisch

Option Explicit 

Function my3CountIfs(Rng1 As Range, Criteria1 As String, Rng2 As Range, Criteria2 As String, Rng3 As Range, Criteria3 As String) As Long 

Dim ws As Worksheet 

For Each ws In ThisWorkbook.Worksheets 

    Select Case ws.Name 
     Case "Summary-Sheet", "Notes", "Results", "Instructions", "Template" 
      ' do nothing 

     Case Else 
      my3CountIfs = my3CountIfs + Application.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2) 

    End Select 
Next ws 

End Function 

Wenn ich den folgenden Befehl Ich habe manuell darauf klicken und Rückkehr traf es die aktualisierte Antwort

=my3COUNTIFS(I49,"Yes",I7,"Yes",I1, "Active") 

und ja zu bringen, ich habe Excel automatische Berechnungen eingestellt.

Vielen Dank für Ihre Hilfe - eine Präsentation auf diesem Excel-Blatt heute Abend und gerade entdeckt, dass es nicht richtig funktioniert! - Huch!

+4

darüber gehört 'Application.Volatile' ... ??? – cyboashu

+0

ändert die Zelle, die mit dieser UDF gefüllt ist, jeden Wert in den Bereichen, die Sie an diese UDF übergeben? Außerdem hat Ihre Funktion 'Rng3' und' Criteria3' Argumente, aber sie verwendet sie nicht – user3598756

+2

application.Volatile funktioniert - vielen Dank @cyboashu –

Antwort

0

Wie Cyboashu in den Kommentaren erwähnt, müssen Sie Application.Volatile in der Funktion setzen. Aber wie Rik erwähnte, kann dies auch zu Leistungsproblemen führen. This particular post und ihre Antworten sind relevant für Ihr Problem.

Nur eine Zusammenfassung der verfügbaren Optionen für Sie:

Function xyz() 
    Application.Volatile 'or Application.Volatile = True in later versions 
    ... 
End Function 

Oder einige manuelle Drücken von Tasten

  • F9 Berechnet alle Arbeitsblätter in allen geöffneten Arbeitsmappen
  • Umschalttaste + F9 Berechnet das aktive Arbeitsblatt
  • neu
  • Ctrl + Alt + F9 Berechnet alle Arbeitsblätter in allen geöffneten Arbeitsmappen (Full Neuberechnung)
  • Umschalttaste + Ctrl + Alt + F9 Baut das Abhängigkeitsbaum und macht eine vollständige Neuberechnung

Oder eine Option, die für mich funktionierte (da ich nur meine UDFs neu berechnen musste) lated jedes Mal, wenn ich ein bestimmtes Makro lief) war SendKeys wie so zu verwenden:

Sub xyz() 
    ... 
    'Recalculates all formulas by simulating keypresses for {ctrl}{alt}{shift}{F9} 
    SendKeys "^%+{F9}" 
    ... 
End Sub 

(Here's the MSDN page for SendKeys)