Code-Ausführung stoppen per Taste oder Mausklick

Hallo Experten,
kann mir Jemand einen Tip geben, wie ich ein laufendes Makro unterbrechen kann, ohne die ESC-Taste zu drücken und dann das Dialogfenster zu beantworten?
Hintergrund: Habe spaßeshalber „Conways Spiel des Lebens“, also eine Simulation, in Excel nachgebaut und möchte den automatischen Ablauf durch eine Schaltfläche oder einen beliebigen Tastendruck ( „press any key to abort“ ) oder auch durch einen Mausklick stoppen können.
Mit „onkey“ habe ich es nicht hingekriegt.
Schönen Dank schon ´mal für Dein Interesse.
Freundliche Grüße
Thomas

Hi,

VBA ist m. W. nicht Thread-fähig, darum geht es wohl nur etwas umständlich…

Sowas hab ich vor längerer Zeit mal in Access gemacht, sollte aber auch in Excel klappen.

Du müsstest dafür sorgen, das in deinem Code regelmäpßg (und oft) der Befehl doevents ausgeführt wird. Dann würde auch ein Buttonklick verarbeitet. Wenn der Button geklickt wird, änderst du einen Zellwert oder einen globale Veriabel auf abbrechen = true.

Nach dem doevents in deinem Code müsstest du dann noch einen Test einbauen, ob abgebrochen werden soll.

So in der Art hab ich das mal hinbekommen.

kann mir Jemand einen Tip geben, wie ich ein laufendes Makro
unterbrechen kann, ohne die ESC-Taste zu drücken und dann das
Dialogfenster zu beantworten?

Hallo Thomas,

mit Esc kannst du abbrechen?
GIbt es da Gründe warum das nicht reicht?

Das geht das sehr leicht mit vba.
Muß aber gleich weg, danach schaue ich mal.

Gruß
Reinhard

funktioniert!
Hallo power_blue,
vielen Dank für den Tip. Hat geklappt :smile:
Das Makro stoppt wie gewünscht bei anklicken einer Schaltfläche und auch bei Mausklick über eine bestehende „Private Sub Worksheet_SelectionChange“, die ich zum Verändern des Ausgangsmusters schon programmiert hatte und nur um das Setzen eines Zellwertes erweitern musste.
Mann, was habe ich gesucht und probiert … Dabei ist das doch wohl kein so ungewöhnlicher Wunsch …
Einen schönen Tag wünscht Dir
Thomas

Hallo Reinhard,
ESC möchte ich nicht benutzen, weil ich etwaige User ( meine kids ) nicht mit der besagten Dialogbox konfrontieren will.
( Sieht immer nach „Fehler“ aus )
Wenn man da z. B. einfach auf Return drückt, ist man plötzlich im vba-Debugger. Da weiß nicht jeder, was er da soll …
Das Problem hat power_blue nun schon gelöst.
Falls Du noch eine elegantere Methode kennst bin ich gespannt.
Vielen Dank und freundliche Grüße
Thomas

Thomas

Hallo Thomas,

ich bin da noch am Ball. Fand auch Lösungen, aber nix dabei was mir so richtig gefällt.

Ich muß aber ach sagen, soviel Energie hab ich da noch nicht reingesteckt, also schon gesucht, ausprobiert, aber ich bin halt so, du hast da was geschrieben von einem Spiel programmiert, da habe ch seitdem Energie aufgebracht, um dir evtll einen neuen Spielansatz mit Spielkarten darzustellen. Naja, bin halt so, verzettel mich gerne :smile:

Den Spielansatz kriegste demnächst, ich bastel noch an Feinheiten.

Gruß
Reinhard

Hallo Thomas,

also zum Spiel, es scheint stabil zu Laufen, vielleicht kannste es ja nutzen, zur Not für Enkelchen :smile:

http://www.file-upload.net/download-3279500/Karten2…

Gruß
Reinhard

Grüezi Reinhard

also zum Spiel, es scheint stabil zu Laufen, vielleicht
kannste es ja nutzen, zur Not für Enkelchen :smile:

http://www.file-upload.net/download-3279500/Karten2…

Ich habe das file mal runtergeladen und beim ersten Klick auf einen Button wurde die folgende Sub mit dem Hinweis auf ‚Mehrfacher Subname‘ angemeckert.

Private Sub cmbCards\_Click()
 KartenHolen
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hintergrund: Habe spaßeshalber „Conways Spiel des Lebens“,

Hallo Thomas,

sorry, dachte du hättest da ein Spiel nachgebaut.
Eben habe ich mal geschaut, das ist ein anderes Kaliber.

Irgendiwe dazu passend habe ich gelesen daß alle diese Simulatiionen auf dem PC daran kranken, egal wie sie da 6 Milliarden Spielfiguren programmieren, letztendlich ist nach Zeit X überall Stillstand.

Ohne Ahnung würde ich mal jetzt behaupten, daß liegt daran daß PCs keine Gefühle haben.
Man kann da schon clever programmieren, also wenn FigA auf FigB trifft in gegengesetzer Richtung muß ja wohl einer bzw. beide ihre Richtung korrigieren sonst stehen sie vor einander und nix geht mehr, was wohl bei allen Simulationen passiert.

Man sieht ja, bei 6 oder 9 Milliarden Menschen passiert das nicht, daß da 4,5 Milliarden Menschen direkt vor einem anderen Menschen stehen und keiner kann weitergehen so wie in der Simulation.

Interessante Sache.

Also vergiß meine Mappe, irgendwie hatte ich gedacht du hättest da ein Spiel programmiert für Kinder/Sohn/Enkel

Gruß
Reinhard

Grüezie Thomas,

das kann ich nicht nachvollziehen. Habe es eben auch heruntergeladen.
Dann im sichtbaren Blatt auf den einzigen Buitton geklickt und das „Spiel“ lief.

Und von der Fehlermeldung her, weil ich so keine namen benutze, das Ganze ist ja Baustelle.
Mein Code ist in einem Modul, die anderen Module sind Testmodule oder das Modul wo der Originalcode von M. Schwimmer steht, aufgrund dessen ich meinen Code bilden konnte.
Irgendwie bist du da hingeraten.

Getestet mit XL2000, kann mir aber nix vorstellen mit Problemen bei andern Versionen.
Naja, wem sag ich das, du wirst das Spiel schon zum Laufen bringen, wenn ich da echt einen Fehler hätte den ich halt nicht habe dann sag halt wie man das verbessert.

Gruß
reinhard

Grüezi Reinhard

das kann ich nicht nachvollziehen. Habe es eben auch
heruntergeladen.
Dann im sichtbaren Blatt auf den einzigen Buitton geklickt und
das „Spiel“ lief.

OK, ich habe das Ganze nochmals getestet.

Im Tabellenblatt ‚Karten‘ auf den Button [Neue Karten] geklickt und prompt kommt 'Merhdeutiger Name: ‚KartenHolen‘ als Fehlermeldung.

Wenn ich die Module durchgehe, dann finde ich auch wirklich in den folgenden 2 Modulen eine Public Sub dieses Namens:

  • Cards

  • mdlSpielkarten

Und von der Fehlermeldung her, weil ich so keine namen
benutze, das Ganze ist ja Baustelle.
Mein Code ist in einem Modul, die anderen Module sind
Testmodule oder das Modul wo der Originalcode von M. Schwimmer
steht, aufgrund dessen ich meinen Code bilden konnte.
Irgendwie bist du da hingeraten.

Wie gesagt, auf dem Tabellenblatt ‚Karten‘ auf den einzigen dort vorgefundenen Button geklickt - so ganz ohne klare Anleitung was da wo gedrückt werden darf und was nicht, ist das alles schon etwas vage *find*

Du hast halt ganz einfach nicht sauber aufgeräumt… :wink:

Getestet mit XL2000, kann mir aber nix vorstellen mit
Problemen bei andern Versionen.
Naja, wem sag ich das, du wirst das Spiel schon zum Laufen
bringen, wenn ich da echt einen Fehler hätte den ich halt
nicht habe dann sag halt wie man das verbessert.

Klicke ich auf den einzigen Button im Tabellenblatt ‚Tabelle1‘, dann erwartet mich ein ‚Laufzeitfehler 1004‘ da wo eine Karte selektiert und mit .Paste eingefügt werden soll.
Das kann nun an xl2007 liegen, hier haben sich ein paar Dinge wohl geändert.

Ist aber kein Beinbruch, das Ganze, wolle es bloss ‚melden‘.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Reinhard,
Dein Spiel habe ich heruntergeladen. Sieht ganz witzig aus. Habe aber keinen Plan, was man da machen muss. Geht das ähnlich dem Spider-Solitär von Windows?
Kenne mich mit Spielen nicht aus. Was ich gerade programmiere ist auch mehr eine Simulation. Meine bisherige Datei hätte ich auch fast upgeloaded, da kam aber ein Fehler.
Bei Deinem Spiel kam auch eine Fehlermeldung und es schien mir auch sehr langsam. Ich habe aber hier zuhause aber auch nur Excel2003 und langsame Hardware, die vielleicht etwas überfordert wird. Werd´s ´mal in der Firma probieren…
Einen schönen Sonntagabend wünscht
Thomas

xla mit Passwort Kennwort schützen
Grüezi Thomas,

das kann ich nicht nachvollziehen. Habe es eben auch
heruntergeladen.
Dann im sichtbaren Blatt auf den einzigen Buitton geklickt und
das „Spiel“ lief.

OK, ich habe das Ganze nochmals getestet.

Im Tabellenblatt ‚Karten‘ auf den Button [Neue Karten]
geklickt und prompt kommt 'Merhdeutiger Name: ‚KartenHolen‘
als Fehlermeldung.

aha, alles klar. Warum auch immer, ich habe es eben nochmals runtergeladen, im sichtbaren Blatt „Tabelle1“ gibt es auch nur einen Button, klick mal da drauf.

Das Blatt Karten und der Code dazu ist das was ich im I-Net fand um überhaupt so eine cards.dll, soll da noch eines cards32.dll geben, auslesen zu können.

So wie es sich darstellt, gibt es da wohl 13 Karten mit verschiedenen Werten, 1=As, 2-10 die Kartenwerte, 11-13= B,D,K.
Dazu gibt es dann 5 Fraben, 4 sind Kreuz,Pik usw., die fünfte bedeutet Rückseite=Deckblatt.

Damit könnte man dann Kartenspiele simulieren. Das habe ich natürlich nicht gemacht, weil Riesenaufwand. Das „Spiel“ ist kein Spiel.
Man sieht nur wie links eine Karte erscheint, dann quer übers Blatt nach rechts läuft/wandert, dann durch Verkleinerung der Breite der optidsche Effekt des Kartensumdrehens erweckt wird.

Ist sie umgedreht baut sich das Deckblatt/Rückseite auf. Ich habe das jetzt nicht perfektioniert, normalerweise müßte nach dem ersten Umdrehen, die Kartenrückseite sichtbar bleiben, damit der optische Effekt eintritt daß es so so aussieht als ob da von links Karten kommen, die dann rechts auf einen Kartenstapel umgedreht wandern.

Das Ganze ist also kein Spiel, nur eine Darstellung wie man sowas in einem Spiel machen KÖNNTE.

Also lösch das Blatt Karten und esklappt :smile:

Fluch grad, hab frisch eine neue Tastatur von medion, mit so ganz flachen Tasten, hatte ich noch nie.
Normal finde ich die Pfeiltasten blind ohne hinzuschauen, aber die sind hier so flach also so wenig herausragend, da muß ich mch dran gewöhnen oder halt die tastatur an die Mülltonne und nehm wieder die alte. Aber okay, ich geb ihr und mir also meinem Tastsinn 3 Tage *gg*

Du hast halt ganz einfach nicht sauber aufgeräumt… :wink:

Das stimmt. An sich gar nicht :smile:. Ich hab nur geschauut daß das in Tabelle1 einigermaßen läuft.

Der Code von Michael half mir sehr überhaupt cards.dll auslesen zu können.
Daraufhin habe ich mein Modul, mein Blatt aufgebaut und nur dieses gepflegt.

Wo ich grade sehr festhänge ist ein unerwartetes Problem, obwohl, Excel wartet oft mit unerwarteten Problemen auf :smile:

Ich hab mit viel Mühe in den letzten Tagen eine xla gebastelt, funktioniert bislang schon mal sehr gut *freu*

Das unerwartete ist, ich kann den Code nicht mit KW schützen :frowning:
Da ich dies bei einer xla noch nie tat, da machte ich bislang immer nur das Gegenteil, also das KW zu liquidiern von Fremdcode *gg*, weiß ich nicht ob das Problem an dem Dateityp hängt.

Ich gehe so vor. Das Add-In ist aktiviert im Manager. Ich gehe in den Editor, Rechtsklick auf das Projekt, mache das Häkchen bei Sichtschutz und geb zweimal untereinander das KW ein.
Dann speichere ich die xla oben links im Editor.

Dann deaktiviere ich im Excel Add-In Manager das Add-IN, beende Excel.
Starte Excel, aktiviere das Add-In, gehe in den Editor und siehe da, ich kann den Code der xla problemlos lesen :frowning:(

Mehrfach probiert, was mache ich falsch? Excel 2000.

Gruß
Reinhard

Hallo Reinhard,
ja, das „Leben“ ist viel einfacher ( zu programmieren ) als die meisten Kartenspiele. Für jede Zelle gelten dieselben simplen Gesetze. Dennoch ist es schwer vorauszusehen, was passieren wird. Bei manchen Anfangskonfigurationen ist nach 10 Generationen „Schluss“, andere machen „ein Fass auf“ ( Unterschied manchmal nur 1 Pixel ). Wenn man Chaos braucht, kann man sicher auch noch Zufallselemente einbauen…
2 weitere „Baustellen“ habe ich noch gar nicht angefangen:

  1. Programmierung eines torusförmigen Spielfeldes, welches dann quasi unendliche / erdballähnliche Verhältnisse simuliert. Ist aber für meine Fähigkeiten bestimmt recht anspruchsvoll
  2. Wahlmöglichkeit für verschiedene Welten / Bildungs- und Überlebensgesetze. Conways Welt hat die Kodierung 23/3 --> 2 und drei Nachbarn: Zelle überlebt, 3 Nachbarn: Zelle wird neu „geboren“.

Jedenfalls können sich Kinder von 7 bis 14 jahren ( und auch von 48 J. ) eine zeitlang damit beschäftigen :wink:

Werde noch einmal versuchen, meine bisherigen Ergebnisse hochzuladen, auch wenn´s dafür Mecker gibt wegen „select“ und Ähnlichem ( Habe versucht, einigermaßen sauber umzuschreiben, aber oft wollte nur der Code aus dem Makrorekorder laufen ).
Freundliche Grüße
Thomas