14.11.2020, 18:15
Warum so ineffizient ?
![]() Forum des Excel-Verein 2015 e.V. |
Das Clever-Excel-Forum-Treffen
findet vom 19.09. - 21.09.2025 in Bad Arolsen statt. Zu den Infos kommt Ihr oben über den Link. |
Animation VBA-Optimierung
|
14.11.2020, 18:15
Warum so ineffizient ?
(13.11.2020, 23:58)volti schrieb: Hallo, Hallo zusammen. ich muss mich entschuldigen, aber mir sind noch paar Sachen aufgefallen: 1) START/STOP-Buttons funktionieren wunderbar, ABER ich darf nirgendswo draufdrucken, keine beliebige Zelle anwählen während das Makro läuft, sonst bekomme ich sofort Fehler(Screenshoot hänge als Anhang)?!? mehr Schönheitsfehler: 2) während das Makro läuft ist mein Bild angewählt, der entsprechend eine Rahme um sich bringt(siehe Anhang) ![]() __________________________________________________________ Code: ActiveSheet.Shapes("Bild").Select 3) in diesen Bereich: mit m=200 tue ich die Startposition bestimmen. Durch verändern disen Wert kann ich die Position im vertikalen Bereich(von obere Kante) verändern.. Ist das möglich das mein Startposition ist genau die wie das Bild platziert ist und nicht die 200??? Ich danke euch vielmals für eure Mühe! :23: LG Andre
15.11.2020, 00:21
Hallo Andre,
versuche es mal so: Code: Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public gbAbbruch As Integer Sub Stoppen() gbAbbruch = True End Sub Sub animation() Dim iOffset As Integer gbAbbruch = False iOffset = -1 With Sheets("Tabelle1") For j = 1 To Val(.Range("F3").Value) m = .Shapes("Bild").Top If m < 1 Or m > 200 Then m = 200 For i = 1 To 380 Sleep 10 .Shapes("Bild").Top = m m = m + iOffset If m < 10 Then iOffset = 1 If m > 200 Then iOffset = -1 DoEvents If gbAbbruch Then Exit Sub Next i Next j End With End Sub ______________________
viele Grüße aus Freigericht Karl-Heinz
15.11.2020, 10:52
Karl-Heinz,
vielen herzlichen Dank :28: Mich fasziniert immer wie schnell ihr das Problem lösen könnt! :28: :23: LG Andre
17.11.2020, 04:41
Hallo zusammen,
wieder sind die Experten gefragt. Bin wieder auf Problem gestoßen: - ich möchte mehrere Animation gleichzeitig/parallel ausführen lassen! Um genau mein Problem zu verstehen => folgendes Beispiel: Ich starte Animation Nr1(Animation läuft) => jetzt möchte ich Animation Nr2 starten während die Animation Nr.1 immer noch am laufen ist. Es sollen dann beide Animationen laufen bis ich eine davon, dann selber stoppe oder deren Code läuft ab. Mein Ziel ist mehrere Animation parallel laufen zulassen, aber zwischen durch eine oder die andere per STOP-Button dann anhalten oder wieder starten ohne das die andere gestört werden. In Moment ist das so, wenn die Animation Nr1 läuft und ich starte die Animation Nr.2, dann wird die Animation Nr1 angehalten. Stoppe ich die Animation Nr.2, dann läuft die Nr.1 weiter(siehe Anhang) ![]() Habe schon probiert verschiedene Sachen/Variable umzubenennen usw. aber kein Erfolg. Deswegen möchte ich euch um Hilfe bitten! Ist es überhaupt möglich 2 oder mehrere Animation unabhängig von einander laufen zulassen? LG Andre P.S: falls mein geänderte Code komisch aussieht bitte nicht mit den Steinen bewerfen - habe halt selber versucht verschiedene Möglichkeiten durchzuspielen ![]()
17.11.2020, 10:02
Hall Andre,
ich hatte es schon so kommen sehen. :19: Aber nun zum Thema. Es können nicht mehrere Sub's parallel ablaufen. Um mehrere Animationen "gleichzeitig" laufen zu lassen, müsste man entweder mit TimerProcs arbeiten oder man packt alle Abläufe in eine Sub. Ich kann mich gerne damit im Laufe des Tages beschäftigen und Dir einen Vorschlag machen... viele Grüße Karl-Heinz
17.11.2020, 11:43
Hallöchen,
das wäre mal meine Variante, hier mit 1s Schaltzeit. Du musst alle 4 Buttons neu zuweisen und mal den Namen vom blauen Bild prüfen und ggf. auf Bild1 ändern. Edit: Makro Animation korrigiert. Code: Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
17.11.2020, 14:23
Hallo,
es gibt zwar schon zwei schöne Varianten, trotzdem will ich meine Version Euch nicht vorenthalten. Bin bei Ein/Aus-Schalten geblieben, kann aber auch als Toggle umgebaut werden... Diese Version ist ohne weiteren Code bis auf 9 Animationen erweiterbar. Es gibt auch nur eine Anlauf-Sub nach Klicken eines Buttons. Hierfür muss aber die Benennung der Button fortlaufend sein. Kann mit der "Button_Umbenennen"-Sub bei Bedarf sichergestellt werden. Wenn alle Animationen ausgeschaltet sind, wird die Hauptschleife verlassen... ![]() viele Grüße Karl-Heinz
17.11.2020, 15:30
Leute, vielen, vielen Dank euch! :23:
3 verschiede Versionen, aber jede funktioniert auf ihre eigene Art und Weise :28: Zitat:Diese Version ist ohne weiteren Code bis auf 9 Animationen erweiterbar. Karl-Heinz, vielen Dank! Das ist genau das was ich brauche! Habe schon eine 3-te Animation dazugefügt und es hat funktioniert! :35: Muss jetzt alle 3 Varianten genauer betrachten und versuchen zu verstehen was da in jeden einzelnen Fall(bei jede Version) abläuft ![]() Ich bin euch wirklich sehr Dankbar! :100: LG Andre |
|