Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich zu Vorgänger Wert

Vergleich zu Vorgänger Wert
09.10.2023 15:10:58
Markus Thomas
Hallo

ich konnte mir schon des Öfteren über die Beiträge in diesem Forum weiterhelfen, nur leider bin ich nun an einem Punkt angekommen, wo ich nicht wirklich weiterkomme.
Ich habe mir für die Eingabe bzw. Zusammenstellung eine Maschinen Konfiguration einen Konfigurator mit Hilfe von Excel und VBA eine Konfigurator erstellt, welcher mir zusätzlich auch den Verkaufspreis der Maschine ermittelt.
Die Eingabe erfolgt auf einem "Basis" Tabellenblatt über die Active-X Steuerelemente inkl. abschalten und Schalten einzelner Optionen.

Nun habe ich allerdings folgen Gedanke, ich möchte beim Verkaufspreis eine die Änderung zur aktuellen Konfiguration darstellen, d.h. jdesmal wenn eine neue Option an- / bzw. abgewählt wird möchte ich die Differenz transparent darstellen.
Hier war der Gedanke diese über VBA zu realisieren.

Folgender Code wurde hierzu von meiner Seite angedacht:

Private Sub Worksheet_Calculate()


If Blatt01.Range("P2").Value > 1 Then 'Prüft ob sich der Wert Ändert


'Application.ScreenUpdating = False 'Bildschirm Aktualisierung aus

Blatt18.Range("H67").Copy 'Daten kopieren von "Aktuell"
Blatt18.Range("H68").PasteSpecial xlValues 'Daten einfügen nach "Alt" - ohne übernehmen der Formatierung

Blatt18.Range("H66").Copy 'Daten kopieren von "Bruttoverkaufspreis"
Blatt18.Range("H67").PasteSpecial xlValues 'Daten einfügen nach "Aktuell" - ohne übernehmen der Formatierung



'Application.ScreenUpdating = True 'Bildschirm Aktualisierung an

End If

End Sub


Bei diesem Code kommt es allerdings dazu, dass in alle 3 Zellen der gleiche Wert geschrieben wird.
In einer Test Datei konnte ich so einen ähnlichen Code zum laufen bekommen, allerdings musste ich diesen Abwandeln, da es hier zu einer Endlosschleife kam.

Unterumständen gibt es hier auch eine Möglichkeit dies über Excel direkt zu realisieren.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich zu Vorgänger Wert
09.10.2023 15:50:40
daniel
Hi
Endlosschleifen entstehen, wenn Eventmakros das Event, das sie auslöst, selber ausführen und sich damit selbst auslösen.
dies kann man verhindern, indem man die automatischen Events vor so einer Aktion ausschaltet, mit dem Befehl:

Application.EnableEvents = False

man darf nur nicht vergessen, am Ende des Makros diese wieder zu aktivieren mit ... = True, ansonsten bleiben sie ausgeschaltet und deine Datei funktioniert nicht mehr so wie gewünscht.
Sollte das mal passieren, muss man die Events über die Eingabe des Befehls Application.EnabelEvents = True im Direktfenster wieder aktivieren (oder durch Schließen und Neustart von Excel)

Gruß Daniel
Anzeige
AW: Vergleich zu Vorgänger Wert
09.10.2023 15:58:57
Yal
Hallo Markus,

die Aktion wird angestossen, jedesmal es neuberechnet wird. Steht die Berechnung auf Manuel, wird gelesen, dass in P2 eine 1 steht, dann die Werte geändert. Beim neuen Berechnung, da Werte geändert wurden steht weiterhin einen 1 in P2 (wir wissen nicht wo oder wie).

also 67 wird in 68 kopiert und 66 in 67 (66 und 67 sind gleich) und sofort danach nochmal, also dann sind 66,67 und 68 alle gleich.

Anstatt "Worsheet_Calulate()" schreibe bitte diese Makro in einer normale Funktion, die Du mit Alt+F8 anrufen kann.
Dann hast Du mehr Kontroll auf das Geschehen.

Ausserdem sollte man -fast- immer solche Ereignisprozedure mit einem
Application.EnableEvents = False
am Anfang und dasselbe in Version = True am Ende laufen lassen.

VG
Yal
Anzeige
AW: Vergleich zu Vorgänger Wert
09.10.2023 16:32:00
GerdL
Hallo Markus,

setze dort an, wo die Wertänderung in Blatt01.Range("P2") ausgelöst wird.

Gruß Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige