Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Makro langsamer ablaufen lassen

Makro langsamer ablaufen lassen
08.12.2023 16:06:01
Peter1755
Hallo
Ich habe in meiner Firma ein Excelsheet gefunden mit dem man CNC-Programme (X und Z-Achsen) per Diagramm anzeigenlassen kann.
Soweit ich es in Erfahrung bringen konnte wurde es von einem Ferialpraktikanten (Studenten) erstellt.
Mittlerweile habe ich mich soweit damit auseinandergesetzt das ich es manuell schaffe ein Diagramm zu erstellen.
Jetzt wollte ich es über ein Makro ablaufen lassen. Dazu habe ich zwecks Unkenntnis der VBA-Programmierung den Makro-Recorder verwendet.
Das funktioniert soweit.
Aber die Grafik wird nicht aufgebaut, sondern es sind alle Koordinaten sofort im Diagramm.
Gibt es eine Möglichkeit Daten Schritt für Schritt (vielleicht mit einer Pause von 2 Sekunden) abzuarbeiten lassen?

Anbei ein Beispiel:
Userbild

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro langsamer ablaufen lassen
08.12.2023 16:18:48
daniel
kommt darauf an.
einen Befehl, der das ganze generell langsamer laufen lässt (quasi mit reduzierter Taktfrequenz) gibt es nicht.

man müsste wissen, wie das Programm aufgebaut ist.
wenn man For-Next-Schleifen hat, kann man am Ende der Schleife eine Warteschleife einbauen:

das folgende Makro spielt 5 Töne, die Länge der Pause zwischen den Tönen kannst du einstellen: (1 = Sekunde)
Sub test()

Dim i As Long
Dim T As Double

For i = 1 To 5

Beep

'Warteschleife 2 Sekunden
T = Timer + 2
Do While Timer T
Loop
Next
End Sub


Gruß Daniel
Anzeige
VBA: Diagramm verzögert aufbauen
08.12.2023 18:58:26
Beverly
Hi Peter,

versuche es mal so:

Sub DiaVerzögert()

Dim lngZeile As Long
With ActiveSheet.ChartObjects(1).Chart
.SeriesCollection(1).Delete
.Refresh
Application.Wait Now + TimeValue("00:00:01")
DoEvents
With .SeriesCollection.NewSeries
.XValues = Range(Cells(3, 1), Cells(3, 1))
.Values = Range(Cells(3, 2), Cells(3, 2))
DoEvents
Application.Wait Now + TimeValue("00:00:01")
For lngZeile = 3 To 15
DoEvents
.XValues = Range(Cells(3, 1), Cells(lngZeile, 1))
.Values = Range(Cells(3, 2), Cells(lngZeile, 2))
DoEvents
.Parent.Parent.Refresh
DoEvents
Application.Wait Now + TimeValue("00:00:01")
Next lngZeile
End With
End With
End Sub


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Makro langsamer ablaufen lassen
11.12.2023 12:31:17
Peter1755
Servus
Nein ist es nicht, vorallem wenn man(n) nicht einen wichtigen Teil übersieht ;)
Ich habe den Part mit der Länge übersehen (For lngZeile = 3 To 15)
Vielen lieben Danke für deine Hilfe, ist eingefügt und läuft einwandfrei.

Ich wünsche allen ein Frohes Fest und einen guten Rutsch.
AW: Makro langsamer ablaufen lassen
11.12.2023 13:25:38
Peter1755
Wäre es sehr dreist noch eine Bitte zu stellen?
Wäre es möglich den Endwert Variabel zu machen?
Also entweder lauf solange bis du keine Werte mehr findest oder hol dir den Endwert aus Zelle J5.
AW: VBA: Diagramm verzögert aufbauen
08.12.2023 21:13:00
Peter1755
Danke erstmal für deine Bemühung.
Wie oben geschrieben bin ich ein absoluter Noob in VBA, Ich kann dir CNC-Programme scheiben aber das war's dann auch schon.
Wie muss ich das von dir beschriebene anwenden, wie meine Koordinaten einfügen sodass sie zusammenspielen.
Das hier von mir beschriebene Beispiel ist nur eine Vorbearbeitung eines Werkstückes, die Datenreihe kann um vieles länger sein.
Wie gesagt ich verstehe viel zu wenig wie ich die Koordinate mit dem Programm verbinden soll.

Info
Meine Intention ist wie folgt: Ich würde dann das Excelsheet unseren Lehrlingen als Simulationsprogramm geben damit sie zuhause üben können.

Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 10:53:26
Yal
Hallo Peter,

Idee: solche Programme gibt es online und teilweise kostenlos. Der G-Code wird per Copy-Paste eingefügt und los geht's.

Einige Angebote z.B. unter
https://all3dp.com/2/cnc-simulator-online-software/

Man könnte mit Excel eine solche Simulation machen, aber es wäre weit entfernt von den Kernaufgaben von Excel, spricht man müsste viel Gehirnschmalz reinstecken, um Fähigkeit nachzubauen, die es nicht gibt. z.B. zeichnen eine Linien nicht auf einmal, sondern als eine Reihe von Segment.
Wenn dein Ziel ist, VBA zu lernen (was nicht so kompliziert ist), dann hat Du einen Projekt.

VG
Yal
Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 11:06:07
Beverly
Zitat: "... spricht man müsste viel Gehirnschmalz reinstecken, um Fähigkeit nachzubauen, die es nicht gibt. z.B. zeichnen eine Linien nicht auf einmal"

Dazu ist nicht viel Gehirnschmalz nötig wenn man etwas von Diagrammen versteht... ;-)
Es sind auch nicht angeblich nicht vorhandene Fähigkeiten, die es verkomplizieren. Das eigentliche Problem ist also nicht, der Datenreihe nach und nach einen neuen Datenpunkt zuzuweisen, sondern Excel beizubringen, die Darstellung im Diagramm nicht auf einen Ritt sondern verzögert zu aktualisieren.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 14:33:04
Yal
Hallo Beverly,

ich gebe zu, ich habe deinen VBA-Code erst nach deiner Antwort ins Detail gelesen (bin am WE im Forum nur übers Handy). Das Einblenden der Punkten nacheinander ist ja eine Lösung.

Nachteil wäre, wenn der durchgelaufene Wege aus kurz und langen Abschnitte besteht: die Länge Abschnitte werden in den gleichen Zeit aufgebaut wie kurzen. Was im CNC eine unrealistische Nachbildung wäre. Aber es ist Peter vielleicht eine ausreichende Lösung. Habe keine bessere.

VG
Yal
AW: VBA: Diagramm verzögert aufbauen
11.12.2023 22:20:35
Peter1755
Servus Yal
Danke für die Antwort.
So wie es jetzt läuft ist es mehr als ausreichend.
Es geht eigentlich nur darum rudimentäre Programme ablaufen zu lassen und den Lehrlingen die Chance zu geben Fehler durch die Visualisierung leichter zu finden.
Mir hat es sehr geholfen was Beverly mir gezeigt hat.

Lg
Peter
Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 11:38:14
daniel
"sondern Excel beizubringen, die Darstellung im Diagramm nicht auf einen Ritt sondern verzögert zu aktualisieren."

Das sollte man sogar ohne VBA hinbekommen, sofern es nur darum geht, die Datenpunkte nacheinander einzublenden.
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 13:34:46
Beverly
Wenn die Daten nach und nach dazukommen - absolut kein Problem ohne VBA, Stichwort "dynamisches Diagramm". Aber zeige es doch bitte mal ohne VBA, wenn alle Daten bereits vorhanden sind und die Fortschrittsanzeige an Datenzuwachs automatisch ablaufen soll - ich lerne gerne dazu.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 19:36:39
daniel
Erste Spalte mit den vollständigen Daten
Zweite Spalte mit den Daten für das Diagramm
Die Daten aus der ersten Spalte übernimmst du dann mit der Formel
=wenn(jetzt()&gt(heute()+$x$1+Zeitwert(0;0;Zeile()));A1;NV())

Zum Starten musst du dann die aktuelle Zeit in die Zelle X1 schreiben und F9 gedrückt halten, damit die die Formeln ständig aktualisiert werden. Die Formeln werden Zeilenweise pro Sekunde die Daten aus der Spalte A in die Spalte B übernehmen, dass die Quelle für das Diagramm (Spalte B) immer weiter befüllt wird.

Alternativ könnte man auch einen Dynamischen Namen als Quelle für das Diagramm erstellen und den Zellbereich zeitgesteuert erweitern.

Gruß Daniel

Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 20:07:44
Beverly
Deine Formel gibt in diesem Formelteil Zeitwert(0;0;Zeile()) einen Fehler aus: Sie haben zu viele Argumente für diese Funktion angegeben.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: VBA: Diagramm verzögert aufbauen
10.12.2023 00:02:03
daniel
Ja, kann sein, das die Funktion anders heißt.
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 10:55:12
Beverly
Hi Peter,

von was für einer "Koordinate" sprichst du...???

Ich bin auf Basis deines Screenshots davon ausgegangen dass die Daten von Zeile 3 bis Zeile 15 vorliegen und der X-Wert jeweils in Spalte A und der dazugehörige Y-Wert jeweils in Spalte B befindet.
Wenn die Anzahl verschieden sein kann dann must du im Code die 15 durch dieses ersetzen: Cells(Rows.Count, 1).End(xlUp).Row. Dann berücksichtigt der Code die letzte belegte Zelle in Spalte A.
Beginnen deine Daten nicht in Zeile 3 dann musst du die 3 durch deine Startzeile ersetzen.

Der Code macht folgendes:
1. wird die vorhandene Datenreihe gelöscht
2. wird eine neue Datenreihe erstellt und ihr - beginnend mit dem ersten Datepunkt mit den Daten aus Zeile 3 (X-Wert Spalte A, Y-Wert Spalte B) entsprechend deinem Screenshot - fortlaufend ein neuer Datenpunkt aus der laufenden Zeile hinzugefügt bis Zeile 15 (bzw. bis die letzte belegte Zelle der Spalte A nach der Codeänderung) erreicht ist.

Mehr kann ich dazu nicht ausführen da ich deine Mappe nicht kenne. Wenn deine Originalmappe genau dem Aufbau in deinem Screenshot entspricht sollte der Code funktionieren.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: VBA: Diagramm verzögert aufbauen
09.12.2023 21:26:42
Peter 1755
Servus an alle und Danke für Euer Input.

Wenn das nicht für unsere Lehrlinge wäre hätte ich so und so die Finger davon gelassen ^^.

Anbei das Excelfile.
https://www.herber.de/bbs/user/164961.xlsm

Der Student hat auch ein Sheet geschrieben das mir alles außer X und Z Koordinaten rausfiltert und rein nur die benötigten Werte ausgibt.
Das funktioniert perfekt.
Die Werte (wie schon mal geschrieben) können auch bei komplexeren Anforderungen schon mal um einiges länger sein. Aber laienhaft gedacht kann ich mir vorstellen, dass man es z.B. 50 Zellen lange macht, sind keine Werte drin ists egal dann tut sich halt nichts im Diagramm… also laienhaft gedacht.
Ich habe es einmal zusammengebracht ein Makro via einer Schaltfläche zu starten. Hat aber genau nur 1x funktioniert, dann gabs einen Laufzeitfehler.
Also wie schon geoutet, ich bin ein absoluter Noob und versuche das nur für unsere Lehrlinge hinzubekommen.
Deshalb vielen Dank für Eure Unterstützung.
Gruß
Peter
AW: VBA: Diagramm verzögert aufbauen
10.12.2023 10:20:07
Beverly
Hi Peter,

ist es wirklich so schwer, den von mir geposteten Code in ein Stadardmodul zu kopieren, die 15 im Code durch den fett markierten Codeteil aus meinem letzten Beitrag zu ersetzen und das Makro mit einer Schaltfläche zu verknüpfen...???

https://www.herber.de/bbs/user/164965.xlsm

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: VBA: Diagramm verzögert aufbauen
11.12.2023 13:34:14
Peter1755
Wie Du siehst tu ich mir schon schwer auf den richtigen Beitrag zu antworten.
Okay, nochmal:

Servus
Nein ist es nicht, vor allem wenn man(n) keinen wichtigen Teil übersieht ;)
Ich habe den Part mit der Länge übersehen (For lngZeile = 3 To 15)
Vielen lieben Danke für deine Hilfe, ist eingefügt und läuft einwandfrei.

Wäre es sehr dreist noch eine Bitte zu stellen?
Wäre es möglich den Endwert Variabel zu machen?
Also entweder: Lauf solange bis du keine Werte mehr findest oder hol dir den Endwert z. B. aus Zelle J5.
AW: VBA: Diagramm verzögert aufbauen
11.12.2023 13:46:28
Peter1755
Danke hat sich erledigt, ich habe folgendes gemacht:

For lngZeile = 3 To Range("K5").Value

Damit ist der Wert der dort steht der Endpunkt.

Danke nochmals für Eure/Deine Hilfe.

Schöne Feiertage.

Gruß
Peter
AW: VBA: Diagramm verzögert aufbauen
11.12.2023 14:02:02
Beverly
Hi Peter,

du kannst es doch variabel gestalten: wenn in K5 eine Zeilennummer steht, dann nimm diese aus K5 - andernfalls die letzte belegte Zeile:

Sub DiaVerzoegert()

Dim lngZeile As Long
Dim lngEnde As Long
lngEnde = Range("K5")
If lngEnde = 0 Then lngEnde = Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet.ChartObjects(1).Chart
.SeriesCollection(1).Delete
.Refresh
Application.Wait Now + TimeValue("00:00:01")
DoEvents
With .SeriesCollection.NewSeries
.XValues = Range(Cells(3, 1), Cells(3, 1))
.Values = Range(Cells(3, 2), Cells(3, 2))
DoEvents
Application.Wait Now + TimeValue("00:00:01")
For lngZeile = 3 To lngEnde
DoEvents
.XValues = Range(Cells(3, 1), Cells(lngZeile, 1))
.Values = Range(Cells(3, 2), Cells(lngZeile, 2))
DoEvents
.Parent.Parent.Refresh
DoEvents
Application.Wait Now + TimeValue("00:00:01")
Next lngZeile
End With
End With
End Sub


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: VBA: Diagramm verzögert aufbauen
11.12.2023 19:45:35
Peter1755
Vielen lieben Dank, ist die elegantere Lösung.
Danke nochmal für deine Unterstützung

Gruß
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige