Laufzeitfehler '6' Überlauf

Hallo,
Ich benutze Visual Basic 6.5. Nun bekomme ich immer:

Laufzeitfehler ‚6‘ Überlauf

Uns zwar in folgendem Abschnitt:

m = 1
Do Until m = 30
GesamtPunkte = GesamtPunkte - Cells(43, 2 + m)

GesamtPunkte = 32765
m = 1
Cells(43, 2 + m) = 6

Woran liegt das? Später kommt noch:
m = m + 1
Loop

Also alles wieder sauber abgeschlossen. Und als Long hats auch nicht geklappt.

Wär nett wenn ihr mir da helfen könntet…

Gruß
GURKE

Hallo Gurke,

Ich benutze Visual Basic 6.5. Nun bekomme ich immer:

kann es sein daß du Excel2007 meinst? Dann schreib das auch und lass das mit dem VB weg, das irritiert nur.

Mit dem Codeschnipsel kann ich nix anfangen, zeige bitte den ganzen relevanten Code.
Und nenne die Codezeile wo der Fehler auftritt.

Gruß
Reinhard

Hallo Gurke,

Laufzeitfehler ‚6‘ Überlauf

Uns zwar in folgendem Abschnitt:

m = 1
Do Until m = 30
GesamtPunkte = GesamtPunkte - Cells(43, 2 + m)

Da stimmt doch was nicht. Mit Cells(43,2+m) verweist du auf eine Zelle und willst die Zelle zu einer Variablen dazuzählen. Das haut nicht hin. Wenn du den Inhalt der Zelle (43,2+m) zu GesamtPunkte addieren willst, dann nimm Cells(43,2+m).value
Ansonsten poste den gesamten Code.

Ralph

Hallo Reinhard,

Ich benutze Visual Basic 6.5. Nun bekomme ich immer:

kann es sein daß du Excel2007 meinst? Dann schreib das auch
und lass das mit dem VB weg, das irritiert nur.

Nein ich habe Excel 2003.

Mit dem Codeschnipsel kann ich nix anfangen, zeige bitte den
ganzen relevanten Code.

Dim GesamtPunkte As Integer
Dim a As Long
.
.
.
Dim p As Long
Dim Counter As Integer

Private Sub Start_Click()
a = 1
.
.
.
p = 0
Counter = 0

'Hauptgebäude
Do Until a = 30
GesamtPunkte = GesammtPunkte.Text

GesamtPunkte = GesamtPunkte - Cells(30, 2 + a)
If GesamtPunkte GesamtPunkte = GesamtPunkte - Cells(44, 2 + n)
'Versteck
o = 0
Do Until o = 10
GesamtPunkte = GesamtPunkte - Cells(45, 2 + o)
'Wall
p = 0
Do Until p = 20
GesamtPunkte = GesamtPunkte - Cells(46, 2 + p)

If GesamtPunkte = 0 Then
Cells(3, 2 + 2 * Counter) = a
Cells(3, 3 + 2 * Counter) = Cells(30, 2 + Cells(3, 2 + 2 * Counter))
Cells(4, 2 + 2 * Counter) = b
Cells(4, 3 + 2 * Counter) = Cells(31, 2 + Cells(4, 2 + 2 * Counter))
Cells(5, 2 + 2 * Counter) = c
Cells(5, 3 + 2 * Counter) = Cells(32, 2 + Cells(5, 2 + 2 * Counter))
Cells(6, 2 + 2 * Counter) = d
Cells(6, 3 + 2 * Counter) = Cells(33, 2 + Cells(6, 2 + 2 * Counter))
Cells(7, 2 + 2 * Counter) = e
Cells(7, 3 + 2 * Counter) = Cells(34, 2 + Cells(7, 2 + 2 * Counter))
Cells(8, 2 + 2 * Counter) = f
Cells(8, 3 + 2 * Counter) = Cells(35, 2 + Cells(8, 2 + 2 * Counter))
Cells(9, 2 + 2 * Counter) = g
Cells(9, 3 + 2 * Counter) = Cells(36, 2 + Cells(9, 2 + 2 * Counter))
Cells(10, 2 + 2 * Counter) = h
Cells(10, 3 + 2 * Counter) = Cells(38, 2 + Cells(11, 2 + 2 * Counter))
Cells(11, 2 + 2 * Counter) = i
Cells(11, 3 + 2 * Counter) = Cells(39, 2 + Cells(12, 2 + 2 * Counter))
Cells(12, 2 + 2 * Counter) = j
Cells(12, 3 + 2 * Counter) = Cells(40, 2 + Cells(13, 2 + 2 * Counter))
Cells(13, 2 + 2 * Counter) = k
Cells(13, 3 + 2 * Counter) = Cells(41, 2 + Cells(14, 2 + 2 * Counter))
Cells(14, 2 + 2 * Counter) = l
Cells(14, 3 + 2 * Counter) = Cells(42, 2 + Cells(15, 2 + 2 * Counter))
Cells(15, 2 + 2 * Counter) = m
Cells(15, 3 + 2 * Counter) = Cells(43, 2 + Cells(16, 2 + 2 * Counter))
Cells(16, 2 + 2 * Counter) = n
Cells(16, 3 + 2 * Counter) = Cells(44, 2 + Cells(17, 2 + 2 * Counter))
Cells(17, 2 + 2 * Counter) = o
Cells(17, 3 + 2 * Counter) = Cells(45, 2 + Cells(18, 2 + 2 * Counter))
Cells(18, 2 + 2 * Counter) = p
Cells(18, 3 + 2 * Counter) = Cells(46, 2 + Cells(19, 2 + 2 * Counter))

Counter = Counter + 1
End If

GesamtPunkte = GesamtPunkte - Cells(46, 2 + p)

If GesamtPunkte

Moin Ralph,

Da stimmt doch was nicht. Mit Cells(43,2+m) verweist du auf
eine Zelle und willst die Zelle zu einer Variablen dazuzählen.
Das haut nicht hin. Wenn du den Inhalt der Zelle (43,2+m) zu
GesamtPunkte addieren willst, dann nimm Cells(43,2+m).value
Ansonsten poste den gesamten Code.

Also er hat es schon dieverse male davor geschafft und da hat es ohne .value funktioniert! Mit funzt es aber auch nicht, harkt an der gleichen Stelle fest.

Gruß
GURKE

PS: Code ist bei der anderen Antwort gepostet.

Hallo,

‚Dim GesamtPunkte As Integer‘

der Wert wird zu groß, mach daraus ein Long.

Gruß Rainer

Hallo Gurke,

Fehler nicht nachvollziehbar.

Benutze immer Option explicit dannn passiert dir nicht der Fehler wie bei GesammtPunkte.

„GesamtPunkte = GesamtPunkte.Text“ bringt Fehler.
Wenn ich das auskommentiere kommt Anwendungsfehler in
Cells(3, 3 + 2 * Counter) = Cells(30, 2 + Cells(3, 2 + 2 * Counter))
weil Counter zu groß geworden ist für 256 Spalten.

a,b,c,d,… würde ich durch A(20) ersetzen, damit kann man dann Code verkürzen.

kapiert was der Code so treibt hab ich noch nicht bei kurzem Drüberschauen.

Option Explicit
'
Private Sub Start\_Click()
Dim GesamtPunkte, a As Long, p As Long, Counter As Integer
Dim b, c, d, e, f, g, h, i, j, k, l, m, n, o, q, r, s, t
a = 1
p = 0
Counter = 0
'Hauptgebäude
Do Until a = 30
 GesamtPunkte = GesamtPunkte.Text
 GesamtPunkte = GesamtPunkte - Cells(30, 2 + a)
 If GesamtPunkte 

Gruß
Reinhard

Moin,
Danke für den Tipp! Hat funktiniert!

Allerdings habe ich jetzt ein neues Problem. Wenn ich das Programm ausführe, dann kommt erstmal keine Rückmeldung, habe ihn ne Zeit lang arbeiten lassen, weil das ja nicht gerade wenige Berechnungen sind, doch nach gut 10 Minuten immernoch nichts. Habe es dann abgebrochen, weil ich keine Lust hatte weiter zu warten, könnt ihr mir da noch Tipps geben die Berechnungen zu vereinfachen, sodass er weniger zu rechnen hat?

Hintergrund:
Vielleicht kennt ihr das Spiel, die-Staemme, zu mindest wollte ich dafür ein kleines Programm schreiben, welches berechnet, welche Gebäudekombinationen man haben kann um die Punktzahl erreichen zu können. Bei 4 Gebäuden funktionierte das auch noch, hat gut 5 Sekunden gedauert und dann hat er alles angezeigt. Doch nu sind es zu viele Gebäude ;(

Gruß
GURKE

PS: Ich schicke euch auch gerne mal die ganze Datei per E-Mail, dann könnt ihr es vielleicht besser nachvollziehen…

Hallo Luxusgurke,

Danke für den Tipp! Hat funktiniert!

versteh ich nicht, beim gleichen Code den ich habe?
Natürlich hatte ich auch das „as Integer“ entfernt. Wie gesagt, konnte den Fehler nicht nachstellen, auch nicht mit „as Integer“.
Waren wohl andre Fehler die sich vordrängelten.
Warum die bei dir nicht auftreten ist mir shchleierhaft.

Habe es dann abgebrochen, weil ich keine Lust hatte
weiter zu warten, könnt ihr mir da noch Tipps geben die
Berechnungen zu vereinfachen, sodass er weniger zu rechnen
hat?

Schreib mal zu Codeanfang:

Application.Screenupdating=false
Application.Calculation=xlmanual

und am Ende:

Application.Screenupdating=True
Application.Calculation=xlautomatic

Vielleicht kennt ihr das Spiel, die-Staemme,

Nein. Vielleicht hätte ich dann den Zweck des Codes erkannt :smile:

PS: Ich schicke euch auch gerne mal die ganze Datei per
E-Mail, dann könnt ihr es vielleicht besser nachvollziehen…

Es gibt die FAQ:2606, nimm hostarea.

Gruß
Reinhard

Hi,

Vielleicht kennt ihr das Spiel, die-Staemme

nein, ich spiele Grepolis und Ikariam. :smile:

den Code muss ich mir erst mal nach VB übersetzen (ich habe kein Excel) damit ich mir den genau ansehen kann. Das kann so lang nicht dauern …

Gruß Rainer

Danke für den Tipp! Hat funktiniert!

Hallo Gurke,

bei mir funktioniert da kaum was.

Dein Code beginnt in B und schreibt dann immer 2 Sapletn weiter in Spalte D, dann F, dann H usw.

Zeile 18 läuft dabei von 0 bis 19, danach beginnt sie wieder bei 0 wobei Zeile 17 um Eins erhöht wird.

Tabellenblatt: [Mappe1]!Tabelle1
 │ B │ C │ D │ E │ F │ G │ H │
───┼───┼───┼───┼───┼───┼───┼───┤
 3 │ 1 │ │ 1 │ │ 1 │ │ 1 │
───┼───┼───┼───┼───┼───┼───┼───┤
 4 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
 5 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
 6 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
 7 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
 8 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
 9 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
10 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
11 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
12 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
13 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
14 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
15 │ 1 │ │ 1 │ │ 1 │ │ 1 │
───┼───┼───┼───┼───┼───┼───┼───┤
16 │ 1 │ │ 1 │ │ 1 │ │ 1 │
───┼───┼───┼───┼───┼───┼───┼───┤
17 │ 0 │ │ 0 │ │ 0 │ │ 0 │
───┼───┼───┼───┼───┼───┼───┼───┤
18 │ 0 │ │ 1 │ │ 2 │ │ 3 │
───┴───┴───┴───┴───┴───┴───┴───┘

In der letzten Spalte, hier 16384 ist damit Schluß, es kommt ein Fehler weil es rechts davon keine Spalten mehr gibt. So sieht das bisher geschriebene aus:

Tabellenblatt: [Mappe1]!Tabelle1
 │ XEX│ XEY│ XEZ│ XFA│ XFB│ XFC│ XFD│
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 3 │ 1 │ │ 1 │ │ 1 │ │ 1 │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 4 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 5 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 6 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 7 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 8 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
 9 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
10 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
11 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
12 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
13 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
14 │ 0 │ │ 0 │ │ 0 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
15 │ 2 │ │ 2 │ │ 2 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
16 │ 12 │ │ 12 │ │ 12 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
17 │ 9 │ │ 9 │ │ 9 │ │ │
───┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
18 │ 8 │ │ 9 │ │ 10 │ │ │
───┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
XEX3:XFD18
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Wie man sieht, ist zu dem Zeitpunkt erst ein Bruchteil der Gesamtschleifen durchlaufen.
Sofern das Endergebnis so aussehen soll:
19
19
19
19
19
19
19
19
19
19
19
19
19
19
19
19

Benutzt habe ich dabei den Code den ich oben schrieb. Nur das mit dem Integer korrigiert und diese Zeile auskommentiert:
'GesamtPunkte = GesamtPunkte.Text
da falsch.

Wir beide müssen also unterschiedlichen Code benutzen wenn deiner durchläuft.
Für mich schwierig das herauszukriegen. Deine Rückantwortbereitschaft auf meine Beiträge finde ich nicht so prickelnd.

Gruß
Reinhard

Gruß
Reinhard

Moin,

versteh ich nicht, beim gleichen Code den ich habe?
Natürlich hatte ich auch das „as Integer“ entfernt. Wie
gesagt, konnte den Fehler nicht nachstellen, auch nicht mit
„as Integer“.
Waren wohl andre Fehler die sich vordrängelten.
Warum die bei dir nicht auftreten ist mir shchleierhaft.

Ne, dir fehlt noch eine Tabelle und der UserForm, die du vielleicht noch hinbekommen kannst. In der Tabelle stehen für diesen Prozess relevante Daten und ohne macht die Rechnung einfach kein Sinn.

Habe es dann abgebrochen, weil ich keine Lust hatte
weiter zu warten, könnt ihr mir da noch Tipps geben die
Berechnungen zu vereinfachen, sodass er weniger zu rechnen
hat?

Schreib mal zu Codeanfang:

Application.Screenupdating=false
Application.Calculation=xlmanual

und am Ende:

Application.Screenupdating=True
Application.Calculation=xlautomatic

Kann was bringen, ist nur schwierig rauszufinden, denn es gibt:
15.141.432.140.299.700.000 Kombinationen, die er im schlimmsten Falle alle prüft.
Nun habe ich noch ein Zähler eingebaut, der anzeigt, wie viele Kombinationen er schon durchprobiert hat, der funktioniert nur leider dann, wenn ich deine Zeilen weg lasse und nach gut 1 Minute war er erst bei 200.000 Kombinationen. Also teoretisch wird es mit den 4 Zeilen bestimmt schneller laufen, allerdings habe ich ehrlich gesagt keine Lust das rauszufinden, weil dann der PC einige Zeit durchlaufen müsste…

Vielleicht kennt ihr das Spiel, die-Staemme,

Nein. Vielleicht hätte ich dann den Zweck des Codes erkannt

-)

Kurzerklärung:
Man bekommt in dem Spiel für Gebäude und deren Stufen Punkte. Nun wollte ich mit dem Programm, nur aus den Punkten, die Gebäudestufen herausfinden.

PS: Ich schicke euch auch gerne mal die ganze Datei per
E-Mail, dann könnt ihr es vielleicht besser nachvollziehen…

Es gibt die FAQ:2606, nimm hostarea.

Ich guck mal was sich machen lässt…

Gruß
GURKE

Datei
Hier ist die Datei:
http://drop.io/problemdurchueberlauf#

PS: Danke für deine Hilfe

Hi,

Hi,

Vielleicht kennt ihr das Spiel, die-Staemme

nein, ich spiele Grepolis und Ikariam. :smile:

den Code muss ich mir erst mal nach VB übersetzen (ich habe
kein Excel) damit ich mir den genau ansehen kann. Das kann so
lang nicht dauern …

Solange es danach Hilfe verspricht xD

Gruß
GURKE

PS: Datei
Ich habe am Code noch ein par Veränderungen vorgenommen, weil er einige Bugs drinne hatten, der den ganzen Code sinnlos machte, aber jetzt funktioniert er, bis auf das er viel zu langsam läuft.

Außerdem ist der Punktebereich, den du, wenn du auf dem Button klict, links eingeben musst so zwischen 100 und 10000 Punkten. Umso höher die Punkteanzahl umso länger dauert es, ungefähr.

Hallo,

Kann was bringen, ist nur schwierig rauszufinden, denn es
gibt:
15.141.432.140.299.700.000 Kombinationen, die er im
schlimmsten Falle alle prüft.

die kann man nicht alle prüfen.
Ist es (wie meist) so, daß sich viele Kombinationen gegenseitig ausschließen und nur ein Bruchteil davon als Lösung in Frage kommt? Dann sieh Dir mal ‚rekursive Prozeduren‘ an. Das wird der weg sein, die Rechenzeit zu verkürzen. Rechne aber schon mal mit einigen Knoten im Hirn. :smile:

Kurzerklärung:
Man bekommt in dem Spiel für Gebäude und deren Stufen Punkte.
Nun wollte ich mit dem Programm, nur aus den Punkten, die
Gebäudestufen herausfinden.

Gib doch mal Beispiel, das würde schon helfen.
1.) Anfänger, wenig Punkte, kaum entwickelt.
2.) Mittelfeld. Gut, aber noch nicht fertig entwickelt.
3.) Oberliga. :smile: Alles gut ausgebildet.
4.) Spitze.

Punkte, alle Gebäude mit Stufe und Punkte pro Stufe, falls das so einfach ist. In anderen Browsergames ist es schon schwierig, die Punkte für bestimmte Gebaüde pro Stufe überhaupt zu ermitteln, weil die nicht konstant sind.

Gruß Rainer

Hi,

Kann was bringen, ist nur schwierig rauszufinden, denn es
gibt:
15.141.432.140.299.700.000 Kombinationen, die er im
schlimmsten Falle alle prüft.

die kann man nicht alle prüfen.
Ist es (wie meist) so, daß sich viele Kombinationen
gegenseitig ausschließen und nur ein Bruchteil davon als
Lösung in Frage kommt? Dann sieh Dir mal ‚rekursive
Prozeduren‘ an. Das wird der weg sein, die Rechenzeit zu
verkürzen. Rechne aber schon mal mit einigen Knoten im Hirn.

-)

Ja, ich hatte ja schon versucht, alle rauszufiltern, die in den negativen Bereich gehen, also wenn Hauptgebäude und Kaserne zusammen schon weniger als die Gesamtpunkte sind, sollte er alles danach weglassen. Nur hat das vom Sinn her wie ich mir das dachte nicht funktioniert. Ich wollte es jetzt erstmal überhaupt laufend bekommen. Allerdings versuche ich wieder alle negativen rauszubekommen.

Kurzerklärung:
Man bekommt in dem Spiel für Gebäude und deren Stufen Punkte.
Nun wollte ich mit dem Programm, nur aus den Punkten, die
Gebäudestufen herausfinden.

Gib doch mal Beispiel, das würde schon helfen.
1.) Anfänger, wenig Punkte, kaum entwickelt.
2.) Mittelfeld. Gut, aber noch nicht fertig entwickelt.
3.) Oberliga. :smile: Alles gut ausgebildet.
4.) Spitze.

Punkte, alle Gebäude mit Stufe und Punkte pro Stufe, falls das
so einfach ist. In anderen Browsergames ist es schon
schwierig, die Punkte für bestimmte Gebaüde pro Stufe
überhaupt zu ermitteln, weil die nicht konstant sind.

http://de53.die-staemme.de/help2.php?article=points

zu 1,2,3,4 kann man das nicht wirklich sagen, es gibt Leute die Produktion ausbauen bevor sie Kämpfer machen. Andere machen sofort Kämpfer und haben eine schlechte Produktion. Aber beide haben eine ähnliche Punktzahl. So zwischen 100 und 1000 kommen ja auch meistens mehr als 254 Kombinationen.

Gruß
GUKRE

Hallo,

zu 1,2,3,4 kann man das nicht wirklich sagen, es gibt Leute
die Produktion ausbauen bevor sie Kämpfer machen. Andere
machen sofort Kämpfer und haben eine schlechte Produktion.
Aber beide haben eine ähnliche Punktzahl. So zwischen 100 und
1000 kommen ja auch meistens mehr als 254 Kombinationen.

ja, wie sonst auch.
Aber auch wer auf Produktion setzt, braucht ein Mindestmaß an Verteidigung und wer auf Militär setzt, wird die Kämpfer versorgen müssen. Dann lässt sich sicher ein Minimum, Maximum und Durchschnitt definieren. Wenn sich kein exaktes Ergebnis errechnen lässt, kann man so wenigstens die Rechenzeit minimieren.

Ich würde das in Stufen angehen. Für die Exoten, bei denen es pro Stufe eine Primzahl an Punkten gibt einen Algorithmus entwicklen, nach dem die schon mal aus der Summe herausgerechnet werden. Danach kann man andere nach wahrscheinlichkeit aus der Summe herausrechnen, so daß etwas übrig bleibt, das durch die übrigen wahrscheinlichen Punktezahlen teilbar ist.

Alle möglichen, aber unwahrscheinlichen Kombinationen zu ermitteln und dann zu filtern ist extrem langsam, nicht brauchbar.

… Ich bau Deinen Code doch nicht für VB6 um. Ich denke, Du hast den falschen Ansatz. :smile: Sorry. Um Dein Programm komplett zu schreiben, müsste ich wohl anfangen, das Spiel zu spielen. Das ist mir zu heftig, für noch ein Spiel fehlt mir die Zeit.

Gruß Rainer

Application.Screenupdating=false
Application.Calculation=xlmanual
Application.Screenupdating=True
Application.Calculation=xlautomatic

Kann was bringen, ist nur schwierig rauszufinden, denn es
gibt:
15.141.432.140.299.700.000 Kombinationen, die er im
schlimmsten Falle alle prüft.
Nun habe ich noch ein Zähler eingebaut, der anzeigt, wie viele
Kombinationen er schon durchprobiert hat, der funktioniert nur
leider dann, wenn ich deine Zeilen weg lasse und nach gut 1
Minute war er erst bei 200.000 Kombinationen. Also teoretisch
wird es mit den 4 Zeilen bestimmt schneller laufen, allerdings
habe ich ehrlich gesagt keine Lust das rauszufinden, weil dann
der PC einige Zeit durchlaufen müsste…

Hallo Gurke,

baue die vier Codezeilen ein.
Dann schreib an die richtige Stelle im Code:

Debug.Print Zaehler

Im Editor dann Ansicht—Direktfenster

Nun die Fenster Excel und Editor so verkleinern daß du beide siehst, im Editor das Direktfenster, in Excel den Start-Button.
Dann klick drauf…

Alternative ist, an der richtigen Stelle im Code zu schreiben:

Application.StatusBar = Zaehler

Dann siehst du in Excel unten den Zaehler laufen.

Du hast da Variablen ohne Dim, aa, bb, cc, usw.
Deklariere die als Byte, Integer oder Long, je nachdem.

Ansonsten, ich verspüre wenig bis gar keine Lust mich in „die Stämme“ einzuarbeiten :smile:

Und, rekursive Aufrufe machen den Code schön klein, aber da lauert im Hintergrund Stapelüberlauf.
Und ja, da qualmt der Kopf bei der Codierung :smile:)
Ist ja kein kleines Primzahlenproblemchen.

Gruß
Reinhard