Office: (Office 2019) VBA Code ohne ergebnis

Helfe beim Thema VBA Code ohne ergebnis in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Bastler, hier noch mal ein anderer Vorschlag. Damit wird verhindert, dass die Formel in D14 überschrieben wird. Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Motor-Bastler, 27. August 2024.

  1. Klaus-Dieter Erfahrener User

    VBA Code ohne ergebnis


    Hallo Bastler,

    hier noch mal ein anderer Vorschlag. Damit wird verhindert, dass die Formel in D14 überschrieben wird.
     
    Klaus-Dieter, 30. August 2024
    #16
  2. Sorry, wenn meine erneute Anfrage etwas missverständlich war. Ich möchte, dass sobald an den zu berechnenden Zellen eine Veränderung eintritt, die jeweilige Zelle mit dem neuen Ergebnis überschrieben wird. Die Werte in den 3 Zellen sollten sich jeweils aktualisieren, wenn eine Werteänderung erfolgt ist. Und dies soll gleichzeitig in einer "Prozedur" erfolgen.
     
    Motor-Bastler, 30. August 2024
    #17
  3. Klaus-Dieter Erfahrener User
    Hallo Bastler,

    beschreibe doch bitte mal genau, was du haben möchtest. Aus meiner Sicht macht es keinen Sinn, immer wieder per VBA eine Formel in eine Zelle zu schreiben. Entweder man trägt die Formel per Hand ein und schützt sie gegen Überschreiben, so wie in meinem letzten Vorschlag, oder man führt die Berechnungen gleich per VBA aus, so wie in meinen voran gegangenen Vorschlägen.
     
    Klaus-Dieter, 30. August 2024
    #18
  4. VBA Code ohne ergebnis

    Hallo, ich stelle mal einen VBA Versuch ein, der mir die von mir gewünschten Berechnungen durchführen soll. Je nach Konstellation würden sich die Werte der Formeln ändern, bzw. durch neue ersetzt werden, so war es meine Idee.
    Code:
    [/
     Private Sub Worksheet_Change(ByVal Target As Range)
         If Not Intersect(Target, Me.Range("D3:D4")) Is Nothing Then
            If Me.Range("E4").Formula <> "=DATEDIF(D3,D4+1,""M"")" Then
            Me.Range("E4").Formula = "=DATEDIF(D3,D4+1,""M"")"
        End If
     End If
    
    If Not Intersect(Target, Range("C18:C17")) Is Nothing Then Range("D18") = Range("C18") - Range("C17")
     
    
    If Not Intersect(Target, Range("C13:C14")) Is Nothing Then Range("D14") = Range("C13") - Range("C14")
    
      End If
        End If
    
    End Sub
    
    CODE]
     
    Motor-Bastler, 30. August 2024
    #19
  5. Das wars gewesen. Jetzt haut's hin.


    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False 'Deaktiviert Ereignisse
    
        If Not Intersect(Target, Me.Range("D3:D4")) Is Nothing Then
            If Not Me.Range("E4") Is Nothing Then
                If Me.Range("E4").Formula <> "=DATEDIF(D3,D4+1,""M"")" Then
                    Me.Range("E4").Formula = "=DATEDIF(D3,D4+1,""M"")"
                End If
            End If
        End If
        
        If Not Range("D14") Is Nothing Then
            Range("D14").FormulaLocal = "=Summe(C14-C13)"
        End If
        
        If Not Range("D18") Is Nothing Then
            Range("D18").FormulaLocal = "=Summe(C18-C17)"
        End If
    
        Application.EnableEvents = True 'Aktiviert Ereignisse erneut
    End Sub
    
     
    Motor-Bastler, 31. August 2024
    #20
  6. HKindler
    HKindler Erfahrener User
    Hi,

    also das ganze Vorhaben ist doch für die Katz.

    Gehen wir das mal durch und schauen, was dein Code eigentlich so macht.

    Zunächst einmal werden die Events abgeschaltet. Sollte man immer dann machen, wenn der "überwachte Bereich" von diesem Event (Worksheet_Change) verändert wird. Da dies hier nicht passiert, ist es allerdings überflüssig und in diesem Fall sogar gefährlich, da beim Auftreten eines Fehlers in der Routine die Events hier nicht mehr eingeschaltet werden. Dadurch ist dann aber Excel praktisch unbrauchbar, weil es nicht mehr reagiert.

    Dann wird geschaut, ob in D3 oder D4 etwas geändert wurde (If not Intersect(...) Is Nothing).
    Wurde etwas geändert, wird geschaut, ob Range("E4") Nothing ist. Range E4 ist aber eine Zelle. Diese ist immer vorhanden. somit wird ein solcher Ausdruck niemals Nothing sein. Somit liefert If Not Range("E4") Is Nothing immer True. Damit wird der Block immer ausgeführt unddie ganz If-Abfrage flüssiger als flüssig. Dies gilt auch für die Zellen D14 und D18 weiter unten.

    Jetzt schaust du, ob in E4 eine bestimmte Formel steht, falls nein, dann wird die gewünschte Formel eingetragen. Auch hier ist im Grunde die If-Abfrage überflüssig, denn man könnte auch einfach stumpf die Formel eintragen, ohne vorher nachzuschauen, ob sie schon drin steht. Bei D14 und D18 machst du es ja auch so.

    Und dann jetzt noch ein ganz großer Rüffel: Was soll der Scheiß mit =SUMME(x+y)???
    Jemand der mit VBA programmieren will sollte wissen, dass Excel direkt rechnen kann und kein SUMME() braucht!


    Allerdings frage ich mich, weshalb du die Formel jedesmal neu eintragen willst. Reicht es nicht, die Formel einmal händisch einzutragen und die Zelle dann zu schützen?

    Und wenn ich eine Formel schon immer wider neu schreiben will, dann würde ich diese doch nicht neu schreiben, wenn andere(!) Zellen geändert wurden, sondern dann, wenn die Zelle mit der Formel geändert wurde. Also wenn ich aus irgendeinem Grund die Formel immer überschreiben wollen würde (wofür ich keinen Grund sehe!), dann sähe das bei mir so aus:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E4")) Is Nothing Then
        Application.EnableEvents = False
        Range("E4").Formula = "=DATEDIF(D3,D4+1,""M"")"
        Application.EnableEvents = True
    End If
    If Not Intersect(Target, Range("D14")) Is Nothing Then
        Application.EnableEvents = False
        Range("D14").Formula = "=C14-C13"
        Application.EnableEvents = True
    ´End If
    If Not Intersect(Target, Range("D18")) Is Nothing Then
        Application.EnableEvents = False
        Range("D18").FormulaLocal = "=C18-C17"
        Application.EnableEvents = True
    End If
    End Sub
    Oder noch besser und einfacher so:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("E4,D14,D18")) Is Nothing Then
        Application.Undo
    End If
    End Sub
    Und noch ein Zitat
    Dir ist schon klar, dass genau dies das Wesen von Excel ist? Wenn ich eine Zahl in einer Zelle ändere, dann ändert sich auch automatisch das Ergebnis von Formeln, die sich auf diese Zelle beziehen.
     
    1 Person gefällt das.
  7.  
    Motor-Bastler, 2. September 2024
    #22
  8. VBA Code ohne ergebnis

    Der Code, aus dem diese Zeile stammt, passt bei mir zumindest nicht mehr, wenn mit Datedif gerechnet wird.
    Ansonsten will ich das Zitat von HKindler nicht weiter kommentieren.
    Für die Unterstützung sei nochmal gedankt.

    If Not Intersect(Target, Range("E4,D14,D18")) Is Nothing Then
    Application.Undo
     
    Motor-Bastler, 2. September 2024
    #23
  9. HKindler
    HKindler Erfahrener User
    Hi,

    ich habe es jetzt mal selbst getestet. Mit einer kleinen Änderung funktioniert mein letzter Code.
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E4,D14,D18")) Is Nothing Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
    End Sub
    Immer wenn versucht wird, die Zellen E4, D14 oder D18 zu ändern, wird dies zuverlässig verhindert, auch wenn DATEDIF in der Formel steht.

    Ich haben den Verdacht, dass es sich bei deinem Problem um ein x-y-Problem handelt. In deinen Ausführungen lese ich zwischen den vielen Worten, dass dein eigentliches Problem ist, dass sich die Ergebnisse deiner Formeln nicht ändern, obwohl sich eine oder mehrere der Zellen, die von den Formeln ausgewertet werden, geändert haben. Dies ist jedoch, wie bereits erwähnt, nicht normal. Denn eine automatisierte Berechnung ist ja gerade der Sinn von Excel.

    Kann es vielleicht sein, dass die automatische Berechnung abgeschaltet ist?
    Wenn ja, wieso? Gibt es dafür einen Grund? Welcher ist dies?

    Genau an dieser Stelle solltest du ansetzen und nicht versuchen irgendwelche Symptome künstlich zu heilen.
     
Thema:

VBA Code ohne ergebnis

Die Seite wird geladen...
  1. VBA Code ohne ergebnis - Similar Threads - VBA Code ergebnis

  2. VBA Code Anpassen "Wert Einfügen statt Formel"

    in Microsoft Excel Hilfe
    VBA Code Anpassen "Wert Einfügen statt Formel": Hallo alle zusammen. Ich benötige bitte Hilfe von einem Experten, da ich mit meinem Code unzufrieden bin und dieser bei größeren Datenmengen respektive Zeilen ziemlich langsam wird. Wie müsste man...
  3. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  4. VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst"

    in Microsoft Excel Hilfe
    VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst": Hallo Leute dieser Code für Zellenhöhe bei Verbundenen Zellen Funktioniert fast. Ich habe ein Code von jemand anderem bekommen der nicht in einem Forum ist. Ich kann gerade diese Person nicht...
  5. PDF mit Namen,Datum speichern im Zielordner

    in Microsoft Excel Hilfe
    PDF mit Namen,Datum speichern im Zielordner: Hallo, habe das Problem den Namen in Zelle D2, Vorname in Zelle D5 , das Datum steht in der Zelle B 10 und soll beim speichern so angezeigt werden (Max Mustermann 2023 Oktober) wie und wo muß ich...
  6. Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen

    in Microsoft Excel Hilfe
    Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen: Hallo Zusammen, mein erster Beitrag hier, also schon mal Sorry im Voraus, wenn unvollständig beschrieben *:)* Ich habe das Forum schon nach einem brauchbaren Lösungsansatz durchsucht, bin aber...
  7. UserForm zum bearbeiten von Tabellen und speichern

    in Microsoft Excel Hilfe
    UserForm zum bearbeiten von Tabellen und speichern: Guten Tag Ich habe leider ein Problem, das mich zur Verzweiflung bringt. Vielleicht findet hier jemand einen Lösung für mein Problem. Ich bekommen leider einen Laufzeitfehler '1004'. Zur...
  8. VBA Code Tabellenblatt kopieren und UserForm

    in Microsoft Excel Hilfe
    VBA Code Tabellenblatt kopieren und UserForm: Hallo, ich hoffe mir kann jemand helfen. Schon mal vielen Dank für die Unterstützung. Folgende Thematik: In dem Blatt 1 ist ein ComandButton. Mit Klick soll über VBA folgendes abgefragt...
  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