Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro, große Zahlen

Makro, große Zahlen
23.10.2008 10:45:59
Alifa
Hallo Forum,
habe mich lange zurückgehalten mit Fragen. Ich habe hier ein Makro, das ständig "Überlauf" meckert.

Sub EsIstZumVerzweifeln()
Dim a%, b%, c As Variant, z%, t!, d As Variant
t = Timer
For a = 100 To 360
For b = 100 To 360
c = CStr(CDec(a * (a + 1)) * (b * (b + 1)))
If d = 5 & Mid(c, 2, 1) & Mid(c, 3, 1) & Mid(c, 4, 1) & Mid(c, 5, 1) & Mid(c, 6, 1) _
& Mid(c, 7, 1) & Mid(c, 8, 1) & Mid(c, 9, 1) & 4 And a  b Then
Cells(z + 1, 1) = a
Cells(z + 1, 2) = b
Cells(z + 1, 3) = d
z = z + 1
End If
Next
Next
MsgBox "fertig in" & Round(Timer - t, 2) & " Sek"
End Sub


Es soll eine 10-stellige Zahl gefunden werden, die mit 5 beginnt....
Danke im Voraus!
Gruß, Alifa

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro, große Zahlen
23.10.2008 11:15:00
JogyB
Du hast a und b als Integer deklariert, daher rechnet VBA hier in Integer.
Das Makro steigt bei a = 100 und b = 181 aus, da 181 * 182 = 32945 > 32786 (180 * 181 = 32580 geht noch).
Deklariere beide als Long und es funktioniert.
Gruss, Jogy
AW: Makro, große Zahlen
23.10.2008 12:05:00
fcs
Hallo Alifa,
durch die Verwendung des Zahlentyps Integer für die Variablen a und b wird bei der Multiplikation in den Klammern ein Zahlenüberlauf verursacht, da der Zahlentyp beibehalten wird.
Andere Variablendeklaration und setzen der Klammern sollte funktionieren.

Sub EsIstZumVerzweifeln2()
Dim a&, b&, c As Variant, z&, t!, d As Variant
On Error GoTo Fehler
t = Timer
For a = 100 To 360
For b = 100 To 360
c = CStr(CDec(a * (a + 1)) * (b * (b + 1)))
If c = 5 & Mid(c, 2, 1) & Mid(c, 3, 1) & Mid(c, 4, 1) & Mid(c, 5, 1) & Mid(c, 6, 1) _
& Mid(c, 7, 1) & Mid(c, 8, 1) & Mid(c, 9, 1) & 4 And a  b Then
Cells(z + 1, 1) = a
Cells(z + 1, 2) = b
Cells(z + 1, 3) = c
z = z + 1
End If
Next
Next
MsgBox "fertig in " & Round(Timer - t, 2) & " Sek"
Fehler:
If Err.Number  0 Then
MsgBox "Zahl c : " & c & vbLf & "Fehler Nr.: " & Err.Number & vbLf & Err.Description
End If
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige