Office: (Office 2013) VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten

Helfe beim Thema VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich versuche eine Worksheet_Calculate Funktion zum Laufen zu bringen, aber leider klappt es nicht. Mein Ziel ist es ein Macro laufen zu lassen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Tauchmann, 5. August 2015.

  1. Tauchmann Erfahrener User

    VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten


    Hallo,

    ich versuche eine Worksheet_Calculate Funktion zum Laufen zu bringen, aber leider klappt es nicht.
    Mein Ziel ist es ein Macro laufen zu lassen wenn in einem bestimmten Range auf einem bestimmten Worksheet sich ein/oder mehrere Werte durch eine Formel ändern. Aktuell wird das Macro bei jeder einzelnen Berechnung der Arbeitsmappe auch wenn auf einem anderen Worksheet diese durchgeführt wird gestartet und das ist nicht gewünscht.

    z.B.
    Wenn sich auf dem Tabellenblatt „Test“ der Bereich A1:A2 durch die hinterlegten Formel ändert, soll das Macro ausgeführt werden.

    Meine bisherigen Versuche enden entweder bei 1) das bei jeder neuen Formelberechnung egal auf was für einen Arbeitsblatt die Berechnung diese gemacht wird oder 2) schon in der „Private Sub Worksheet_Calculate(ByVal Target As Range)“ eine Fehlermeldung kommt.

    In Google finde ich verschiedene Posts zu dem Thema aber es klappt einfach nicht.
    Auch finde ich zwei verschiedene Herangehensweisen die ich aber nicht ganz verstehe. Was ist der Unterschied zwischen:

    1. Private Sub Worksheet_Calculate(ByVal Target As Range)
    2. Private Sub Worksheet_Calculate()

    Habt Ihr eine Idee wir man soetwas macht?

    SG
    Tauchmann

    zu 1)
    Code:
    Private Sub Worksheet_Calculate()
        Dim target As Range
        Set target = Worksheets("test1").Range("A1:A2")
        If Not Application.Intersect(target, Range("A1:A2")) Is Nothing Then
            MsgBox "test"
        End If
        Set target = Nothing
    End Sub
    zu 2)
    Code:
    Private Sub Worksheet_Calculate(ByVal Target As Range)
        If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
            MsgBox "Hallo"
        End If
    End Sub
     
    Tauchmann, 5. August 2015
    #1
  2. fette Elfe Erfahrener User
    Hallo Tauchmann,

    probier mal ob Du damit zurecht kommst:
    Code:
    Option Explicit
    
    Private Sub Worksheet_Calculate()
    
    Dim rgTarget As Range
        
        With Me
            Set rgTarget = .Range("A1:A2")
            If Not Application.Intersect(rgTarget, .Range("A1:A2")) Is Nothing Then
                MsgBox "test"
            End If
        End With
        
    Set rgTarget = Nothing
    
    End Sub
    Diese Code muss natürlich in das Modul des Blattes, auf das er sich bezieht.
     
    fette Elfe, 5. August 2015
    #2
  3. Tauchmann Erfahrener User
    Hallo Achim,

    Danke für deine Antwort.
    Deinen Code habe ich ausprobiert und behebt erstmal eines der Probleme - nun wird die MsgBox nicht mehr ausgeführt wenn es von einem anderen Worksheet kommt. Leider wird die MsgBox angezeigt wenn auf dem besagten Worksheet eine Formel ausgeführt wird.

    Ich habe mal ein Testfile angehangen (ist wirklich sehr rudimentär).

    Warum funktioniert das einfach nicht?

    SG
    Tauchmann
     
    Tauchmann, 6. August 2015
    #3
  4. Beverly
    Beverly Erfahrener User

    VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten

    Hi,

    das Worksheet_Calculate-Ereignis ist das falsche Ereignis für dein Vorhaben, weil es eben bei JEDER Berechnung im Tabellenblatt ausgeführt wird. Benutze stattdessen das Worksheet_Change-Ereignis und überwache die Zellen, aus denen die Formeln in Spalte A ihre Werte beziehen (in deinem Beispiel also Spalte B).

    Bis später,
    Karin
     
    Beverly, 6. August 2015
    #4
  5. Tauchmann Erfahrener User
    Hallo Karin,

    Danke für deine Idee.
    In dem richtigen Excelfile gibt es eine Übersichtsseite die aus 5 weiteren Arbeitsblättern gefüttert wird. Die Formeln auf der Übersichtsseite sind in Namen hinterlegt und diese sind wiedrum mit Formeln wie: Bereich.Verschieben etc. ausgeschmückt. Auf der Übersichtsseite wird keiner etwas schreiben können nur auf den weiteren 5 Arbeitsblättern in unzähligen verschiedenen Zellen.

    Gibt es da keine Möglichkeit das geschickt zu programmieren?
    Ist das wirklich so sonderbar was ich da machen möchte???

    SG
    Tauchmann

    P.S. Danke nochmal für deine Hilfe beim ausrichten der Nulllinie auf der pri. & sek Achse. Klappt wunderbar :)
     
    Tauchmann, 6. August 2015
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi,

    logischer Ablauf: auf der Übersichtsseite ändern sich keine Formelinhalte, wenn nicht ein anderes Tabellenblatt aktiv ist und dort etwas geändert wird, ergo: es müssen die anderen Tabellenblätter mit ihrem Change-Ereignis überwacht werden und nicht die Übersichtsseite.

    Bis später,
    Karin
     
    Beverly, 6. August 2015
    #6
  7. fette Elfe Erfahrener User
    äähm, ja wie denn nun?
     
    fette Elfe, 6. August 2015
    #7
  8. Beverly
    Beverly Erfahrener User

    VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten

    Hi Achim,

    der Fragesteller möchte die MsgBox NUR, wenn sich der Wert einer Formel in einem BESTIMMTEN Bereich des Übersichtsblattes ändert, nicht bei Änderung JEDES Formelergebnisses in diesem Tabellenblatt - denn genau so reagiert (leider) das Calculat-Ereignis.

    Bis später,
    Karin
     
    Beverly, 6. August 2015
    #8
  9. fette Elfe Erfahrener User
    Huhu Karin,

    das hatte ich wohl verstanden, nur anscheinend nicht ordentlich getestet bzw. überlegt.
    Dankeschön.
    ;O)
     
    fette Elfe, 6. August 2015
    #9
  10. Tauchmann Erfahrener User
    Noch mehr Fragen ?????

    Hallo Beverly, Hallo Achim,

    sorry für meine späte Antwort.

    Danke für Eure Hilfen.
    Den Hinweis von Beverly habe ich verstanden, also auf diese Lösung wäre ich nicht gekommen (hier muss ich noch etwas bastelnVBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten :confused:) - werde mich bestimmt dazu mal melden.

    @ Achim
    Du hast Recht war nicht korrekt von mir (Msgbox und Macro), die Msgbox diente mir nur als Platzhalter wo der Aufruf zu meinem Macro sein soll.

    Feedback zur Me Funktion (Bug ???):
    Nach dem Test von Achims Vorschlag der Me Funktion in meinem richtigen Workbook hat es dann wieder nicht funktioniert. Nach nun einem längerem Test und rumgebastel in einem Testfile (mit Namensmanager gearbeitet) ist mir aufgefallen das wenn in einem Bereichsnamen mit der Formel Bereich.Verschieben gearbeitet wird, funktioniert die VBA ME Funktion nicht mehr. Entferne ich nun die Bereich.Verschieben Funktion im Namen funktioniert die Me Funktion wieder.

    Ich habe mal mein Testfile angehangen.
    Es gibt zwei Arbeitsblätter 1 und 2

    Mein Bereichsname bezieht sich nur auf 1 und wird als Formel in Blatt 1 verwendet. Blatt 2 hat gar keine Verbindungen zu 1 auch keine Namen die auf 2 verweisen. Wenn man nun in 2 einen Wert eingibt, löst dies das Sub Worksheet_Calculate auf Blatt 1 aus und zeigt mir die Msgbox an.

    Könnt Ihr Euch das irgendwie erklären?

    SG
    Tauchmann
     
    Zuletzt bearbeitet: 9. August 2015
    Tauchmann, 9. August 2015
    #10
Thema:

VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten

Die Seite wird geladen...
  1. VBA: Worksheet_Calculate klappt nicht - soll nur bei einem bestimmten Range starten - Similar Threads - VBA Worksheet_Calculate klappt

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  7. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  8. Erstellung eines Dynamischen Kalenders (ggf. VBA)

    in Microsoft Word Hilfe
    Erstellung eines Dynamischen Kalenders (ggf. VBA): Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden