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

Private Sub Worksheet_Calculate()

Forumthread: Private Sub Worksheet_Calculate()

Private Sub Worksheet_Calculate()
17.08.2005 21:16:34
Alex
Hallo,
Ich habe folgende Frage:
Private Sub Worksheet_Calculate()
Wird ja immer dann ausgeführt, wenn ein Worksheet neu berechnet wird.
Wie kann ich einen Behfel ur dann ausführen lassen, wenn ein bestimmtes Blatt neu berechnet wird?
Private Sub Worksheets("Tabelle1")_Calculate()
funktioniert nicht.
Was kann ich tun?
Viele Grüße
Alex
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Private Sub Worksheet_Calculate()
17.08.2005 21:40:47
Heiko
Hallo Alex,
versteh die Frage nicht ganz.
Private Sub Worksheet_Calculate() gehört doch immer zu einem bestimmten Tabellenblatt.
Also wenn du 3 Tabellenblätter hast, kannst (oder mußt) du im Codefenster jedes Tabellenblattes Private Sub Worksheet_Calculate() programmieren.
Also für Tabelle1 einmal im Codefenster für Tabelle1, für Tabelle2 einmal im Codefenster für Tabelle 2 ...
Alles klar ?
Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Private Sub Worksheet_Calculate()
17.08.2005 21:47:41
Alex
Hallo,
komisch. Wenn ich aber aus dieser Tabelle heraus eine andere Excel-Datei öffne und diese sich neu berechnen will, kommt die Fehlermeldung und er springt in den worksheet_calculate() Befehl, der ja in der anderen Ecxeldatei! steht?!
Was soll ich nur machen?
Viele Grüße
Alex
Anzeige
AW: Private Sub Worksheet_Calculate()
17.08.2005 22:04:03
Heiko
Hallo Akex,
kopier mal deinen Code hier rein oder noch besser die Tabelle.
Vielleicht kann man dir dann helfen, weil so versteh ich die Frage immer noch nicht.
Setze die Frage dann aber als offen, damit alle nochmal reinschauen.
Gruß Heiko
AW: Private Sub Worksheet_Calculate()
18.08.2005 00:01:08
Alex
Hallo,
Problem hat sich erledigt.
Habe jetzt kein Calculate-Ereignis sondern ein Change-Ereignis für einen betimmten Zellenbereich.
Vielen Dank
Alex
Anzeige
AW: Private Sub Worksheet_Calculate()
17.08.2005 21:58:22
ChrisBee
Hallo Alex.
Kanns sein das Dein Sub einfach im falschen Code-Fenster steht?
Hast Du "Private Sub Worksheet_Calculate()" im Code-Fenster "Diese Arbeitsmappe"?
Wenn ja, dann nimms da raus und setz es in das Code-Fenster von dem Tabellenblatt in dem
es laufen soll.
Grüße
ChrisBee
Anzeige
AW: Private Sub Worksheet_Calculate()
17.08.2005 22:01:45
Alex
Hallo,
nein. Der Code steht im richtigen Fenster.
Trotzdem Danke.
Viele Grüße
Alex
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Private Sub Worksheet_Calculate und seine Anwendung in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das gewünschte Arbeitsblatt aus:

    • Im Projektfenster auf der linken Seite findest du alle Tabellenblätter. Doppelklicke auf das Arbeitsblatt, für das du den Worksheet_Calculate-Code einfügen möchtest.
  3. Füge den Code ein:

    • Schreibe den folgenden Code in das Codefenster des Arbeitsblattes:
    Private Sub Worksheet_Calculate()
       ' Hier kommt der Code, der ausgeführt werden soll
    End Sub
  4. Anpassen für spezifische Berechnungen:

    • Wenn du nur eine bestimmte Berechnung ausführen möchtest, füge Bedingungen hinzu, um zu prüfen, ob der berechnete Wert dem gewünschten Wert entspricht.
  5. Speichern und Testen:

    • Speichere die Datei und teste die Funktion, indem du das Arbeitsblatt änderst, um die Berechnung auszulösen.

Häufige Fehler und Lösungen

  • Code im falschen Fenster:

    • Stelle sicher, dass du den Private Sub Worksheet_Calculate() im Code-Fenster des richtigen Arbeitsblattes eingefügt hast und nicht im Modul "Diese Arbeitsmappe".
  • Fehlermeldungen bei externen Dateien:

    • Wenn du eine andere Excel-Datei öffnest und es zu Fehlermeldungen kommt, könnte es daran liegen, dass der worksheet_calculate-Befehl auch von der anderen Datei beeinflusst wird. Überprüfe, ob du das Worksheet_Calculate korrekt implementiert hast.
  • Änderungen nicht erkannt:

    • Wenn Änderungen an Zellen nicht erkannt werden, könnte es sein, dass du ein Change-Ereignis statt des Calculate-Ereignisses verwenden musst. Überlege, ob dies in deinem Fall sinnvoll ist.

Alternative Methoden

  • Verwendung von Worksheet_Change:

    • Anstelle des Calculate-Ereignisses kannst du auch das Change-Ereignis nutzen, wenn du auf spezifische Zelländerungen reagieren möchtest. Der Code sieht dann so aus:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
           ' Dein Code hier
       End If
    End Sub
  • Verwendung von Target.Calculate:

    • Wenn du bei bestimmten Zellen kalkulieren möchtest, kannst du excel vba target.calculate verwenden, um nur die spezifischen Zellen zu berechnen.

Praktische Beispiele

  • Einfacher Berechnungsbeispiel:

    Private Sub Worksheet_Calculate()
       Me.Range("B1").Value = Me.Range("A1").Value * 2
    End Sub

    Hier wird der Wert in Zelle A1 verdoppelt und in B1 ausgegeben, jedes Mal, wenn das Arbeitsblatt neu berechnet wird.

  • Bedingte Berechnung:

    Private Sub Worksheet_Calculate()
       If Me.Range("A1").Value > 10 Then
           MsgBox "Der Wert in A1 ist größer als 10"
       End If
    End Sub

Tipps für Profis

  • Debugging: Nutze Debug.Print in deinem Code, um Ausgaben während der Ausführung im Direktfenster zu sehen. Dies hilft dir, Fehler schneller zu finden.

  • Optimierung: Versuche, Berechnungen möglichst effizient zu gestalten, um die Performance deiner Excel-Datei zu verbessern, besonders bei großen Datenmengen.

  • Dokumentation: Kommentiere deinen Code gut, damit du oder andere Benutzer später verstehen, was der Code macht.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Private Sub Worksheet_Calculate() nur für ein bestimmtes Blatt funktioniert?
Du musst den Code im entsprechenden Codefenster des Arbeitsblattes platzieren, das du überwachen möchtest.

2. Was mache ich, wenn ich mehrere Worksheet_Calculate-Ereignisse in unterschiedlichen Blättern nutzen möchte?
Jedes Arbeitsblatt benötigt seinen eigenen Private Sub Worksheet_Calculate()-Code. Du kannst den Code für jedes Blatt anpassen, um spezifische Funktionen auszuführen.

3. Warum funktioniert mein Calculate-Ereignis nicht, wenn ich eine andere Datei öffne?
Das könnte daran liegen, dass der worksheet_calculate-Befehl in der geöffneten Datei aktiv ist. Stelle sicher, dass du den Code nur in der gewünschten Datei ausführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige