Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Function geziehlt deaktivieren - aktivieren

Forumthread: Function geziehlt deaktivieren - aktivieren

Function geziehlt deaktivieren - aktivieren
Stefan
Hallo,
in der unten beschrieben Funktion zähle ich die Roten Zellen, wenn ich aber über einen anderen Makro den Status zurücksetzen will und alle Zellen mit einen Ursprungswert überschreiben, startet jedesmal die Funktion ( und das auch noch für Gelb und Grün). Wie kann ich die Funktion deaktivieren, wenn der andere Makro die Zellen umschreibt, danach möchte ich die Funktion wieder aktivieren.
Danke im Voraus.
Function Anzahl_Rot(Bereich As Range)
Dim Zelle As Range, i As Integer
Application.Volatile
i = 0
For Each Zelle In Bereich
If Zelle.Font.ColorIndex = 3 And Zelle.Value  "" Then i = i + 1
Next Zelle
Anzahl_Rot = i
End Function

Anzeige
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 07:16:39
Hans
Hallo Stefan,
mit dem Application.Volatile ist das so eine Sache.
Eine nicht ganz ungefährliche Lösung:
Stelle den Calculation-Modus am Beginn des auslösenden Makros auf manuell und am Ende wieder auf automatisch, baue aber dazu Fehlerroutinen ein, nicht dass Du nachher auf manuell sitzen bleibst.
gruss hans
Anzeige
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 07:33:18
Stefan
Hallo,
Danke für den Tipp. kannst du mir ein Beispiel dafür geben.
mfG
Stefan
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 07:38:04
Hans
Hallo Stefan,
in etwa so:
Sub MeinGrossesMakro()
On Error GoTo ERRORHANDLER
Application.Calculation = xlCalculationManual
'Tue dies und das
ERRORHANDLER:
Application.Calculation = xlCalculationAutomatic
Calculate
End Sub

gruss hans
Anzeige
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 08:07:10
Stefan
Hallo Hans,
Danke für die schnelle Antwort, funktioniert so einwandfrei.
Wenn ich in der Function das Application.Volatile entferne, berechnet er mir die Anzahl der Farben anscheinend immer bevor eine Änderung eintritt, so hängt der Zähler immer eins hinterher. Welche Alternativen gibt es zu Application.Volatile?
Danke im Voraus.
mfG
Stefan
Anzeige
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 08:09:52
Hans
Hallo Stefan,
wenn es mir denn auch nicht gefällt, eine Alternative kenne ich auch nicht.
gruss hans
AW: Function geziehlt deaktivieren - aktivieren
05.02.2010 08:11:13
Stefan
Trotzdem Danke für die Hilfe.
mfG
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Funktion gezielt aktivieren und deaktivieren in Excel


Schritt-für-Schritt-Anleitung

Um eine Funktion gezielt zu aktivieren und zu deaktivieren, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbookName), wähle Einfügen und dann Modul.
  3. Kopiere den folgenden Code in das Modul:

    Function Anzahl_Rot(Bereich As Range)
       Dim Zelle As Range, i As Integer
       Application.Volatile
       i = 0
       For Each Zelle In Bereich
           If Zelle.Font.ColorIndex = 3 And Zelle.Value <> "" Then i = i + 1
       Next Zelle
       Anzahl_Rot = i
    End Function
  4. Erstelle ein Makro, um die Berechnung zu steuern:

    • Füge den folgenden Code ebenfalls in das Modul ein:
    Sub MeinGrossesMakro()
       On Error GoTo ERRORHANDLER
       Application.Calculation = xlCalculationManual
       ' Hier führst Du Deine Aktionen durch
    ERRORHANDLER:
       Application.Calculation = xlCalculationAutomatic
       Calculate
    End Sub
  5. Teste das Makro:

    • Führe das Makro MeinGrossesMakro aus, um sicherzustellen, dass die Funktion Anzahl_Rot nur dann aktiv ist, wenn Du es möchtest.

Häufige Fehler und Lösungen

  • Fehler: Funktion führt ungewollte Berechnungen durch
    Lösung: Stelle sicher, dass Application.Volatile in der Funktion nur verwendet wird, wenn es wirklich notwendig ist. Entferne es, wenn Du die Berechnungen manuell steuern möchtest.

  • Fehler: Excel bleibt im manuellen Berechnungsmodus hängen
    Lösung: Füge eine Fehlerbehandlungsroutine hinzu, um sicherzustellen, dass der Berechnungsmodus am Ende immer auf automatisch zurückgesetzt wird.


Alternative Methoden

Falls Du die Application.Volatile Funktion nicht verwenden möchtest oder kannst, gibt es Alternativen:

  • Verwende Ereignisse: Du kannst die Berechnung der Zellen durch Ereignisse wie Worksheet_Change steuern. So wird die Funktion nur dann ausgeführt, wenn es wirklich nötig ist.

  • Datenüberprüfung aktivieren/deaktivieren: Du kannst auch die Excel-Datenüberprüfung aktivieren oder deaktivieren, um die Eingaben zu steuern, ohne die Funktion ständig manuell zu aktivieren oder zu deaktivieren.


Praktische Beispiele

  • Beispiel für eine Datenüberprüfung:

    Sub DatenueberpruefungAktivieren()
       With Range("A1:A10").Validation
           .Delete
           .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Option1,Option2,Option3"
           .IgnoreBlank = True
           .InCellDropdown = True
       End With
    End Sub
  • Beispiel für das Deaktivieren der Datenüberprüfung:

    Sub DatenueberpruefungDeaktivieren()
       Range("A1:A10").Validation.Delete
    End Sub

Tipps für Profis

  • Nutze Application.Volatile nur, wenn es unbedingt erforderlich ist, da es die Berechnungsleistung beeinträchtigen kann.
  • Halte Deine Makros gut dokumentiert, um jederzeit nachvollziehen zu können, welche Funktionen aktiviert oder deaktiviert wurden.
  • Experimentiere mit verschiedenen Berechnungsmodi, um die optimale Performance für komplexe Excel-Modelle zu finden.

FAQ: Häufige Fragen

1. Wie kann ich die Datenüberprüfung in Excel aktivieren?
Du kannst die Datenüberprüfung aktivieren, indem Du den entsprechenden Bereich auswählst und die Validierungsoptionen über das Menü Daten > Datenüberprüfung anpasst.

2. Wie schalte ich die Datenüberprüfung in Excel aus?
Um die Datenüberprüfung auszuschalten, wähle den entsprechenden Bereich aus, gehe zu Daten > Datenüberprüfung und klicke auf Alle löschen.

3. Was ist die Funktion Application.Volatile?
Application.Volatile sorgt dafür, dass die Funktion bei jeder Berechnung in Excel neu berechnet wird, was nützlich sein kann, aber auch die Leistung beeinträchtigen kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige