Excel: Schiebepuzzle programmieren - Laufzeitfehler 424?

Screenshot - (Spiele, Microsoft Excel, Visual Basic) Screenshot - (Spiele, Microsoft Excel, Visual Basic)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Leider kann ich nicht erkennen, welche Zeile Excel als die Zeile markiert hat, in der der Fehler auftritt.

Hast du schon in die Hilfe zur Excel-Entwicklungsumgebung geschaut? Dort am besten nach "Auffangbare Fehler" suchen und unter diesem Stichwort bei der entsprechenden Fehlernummer nachsehen. Da wird im Text, der zu 424 verlinkt ist, u. a. folgendes beschrieben (mit anderen Worten)

Eins der Elemente, von dem eine Eigenschaft oder Methode verwendet werden soll, ist kein Objekt sondern ein "einfacher Typ".

Aber ich möchte mir jetzt nicht die Anwendung nachbauen, um die Anweisung, bei der der Fehler entdeckt wird, herauszufinden.

Lamio13 
Fragesteller
 25.02.2017, 21:38
Fehlerlösung (teilweise)

Dieser Fehler war, dass der CommandButton2 nicht existierte, dafür aber ein CommandButton16. Jedoch funktioniert das Spiel immer noch nicht ganz, da manchmal CommandButtons plötzlich aus dem Spielfeld verschwinden, in der Excel Tabelle aber trotzdem an der richtigen Position angezeigt werden.

0
Iamiam  25.02.2017, 23:21
@Lamio13

Hast Du mal versucht, Zeilen/Spalten als Titel zu fixieren ("einfrieren") und die Buttons im linken oberen Eck, das dann ummer sichtbar ist, zu platzieren? Dann dürften die nicht mehr verschwinden!

Ich setz als Command Buttons übrigens immer Textfelder ein, die kann man beliebig formatieren (Farbe/Schriftfarbe und Rahmen) und beschriften!

3
Lamio13 
Fragesteller
 27.02.2017, 11:41
@Lamio13 Fehlerlösung
AlleKnoepfe(SchubladenNummer).Top = AlleKnoepfe(SchubladenNumemr).Top + AlleKnoepfe(SchubladenNummer).Height

Falsch, statt + muss ein - sein, genauso hier:

 AlleKnoepfe(SchubladenNummer).Left = AlleKnoepfe(SchubladenNummer).Left + AlleKnoepfe(SchubladenNummer).Width

Jedoch würde ich noch gerne erreichen, dass man mit einem Klick das Spiel zurücksetzen kann und wenn man alles richtig verschoben hat, herausgegeben wird, dass man gewonnen hat.

0
PWolff  27.02.2017, 15:19
@Lamio13

Meinst du mit "Rücksetzen", dass eine neue zufällige Anfangsstellung erzeugt wird? Dann such im Internet nach "Zufallspermutation". Beachte aber, dass nur ein Teil aller Permutationen auch zu einem lösbaren Puzzle führt. Auslösen mit einem Button.

Oder du lässt zufällig 100 mögliche Züge durchführen, dann sollten die Felder auch gut genug "umgerührt" sein.

Ermitteln, ob man fertig ist:  direkt nach dem Verschieben 1. Nachprüfen, ob das gerade verschobene Element an seinem richtigen Ort ist, 2. Nachprüfen, ob alle übrigen Elemente an ihrem richtigen Ort sind

1
Lamio13 
Fragesteller
 27.02.2017, 20:47
@PWolff

Danke für deine hilfreichen Beiträge.

0
PWolff  27.02.2017, 23:25
@Lamio13

Gerne! Mich freut auch, dass du mit den knappen Tipps auskommst - viele Leute hier wollen einen fertigen Code.

0

Kannst Du sagen in welcher Zeile der Fehler auftritt?
Das geht aus dem Screenshot nicht hervor.
Notfalls gehe den Code Step by Step mit F8 durch.
(Mit F9 kannst Du ggf. in der ersten Zeile einen Haltepunkt setzen.)

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
Oubyi, UserMod Light  25.02.2017, 19:29

P.S.: Und setze auf jeden Fall mal ein
Option Explicit
über Deinen Code, dann fallen z.B. Tippfehler schneller auf.

1
Lamio13 
Fragesteller
 27.02.2017, 11:42

Fehler ist gelöst. Siehe auch unten.

Jedoch würde ich noch gerne erreichen, dass man mit einem Klick das Spiel zurücksetzen kann und wenn man alles richtig verschoben hat,
herausgegeben wird, dass man gewonnen hat.

0