Hallo ihr Excelcracks,
Kurze, für euch einfache Frage
Ich habe hier einen bereits fertig geschriebenen Code. Dieser generiert eine Passwortliste. Leider kann ich nicht beliebig viele generieren, ansonsten kommt der Fehler „Laufzeitfehler 6, Überlauf“. Wie kann ich den Code so umschreiben, dass ich eine unbegrenzte, oder zumindest die höchst möglichste Anzahl an Passwörter generieren kann? Kann mir da jemand helfen?
Beim Fehler wird folgende Zeile markiert:
ReDim strHashArray(1 To lngCount * 2, 1 To 2) As String
Hier der vollständige Code:
Option Explicit
Private strHashArray() As String
Private lngMinPrim As Long, lngMaxPrim As Long
Public Sub prcPasswortGenerator()
Dim blnFound As Boolean
Dim strPassword As String, strCharacter As String, strArray() As String
Dim vntCharacters As Variant, vntRowsCount As Variant, vntColumnsCount As Variant
Dim intCharactersCount As Integer, intCharacters As Integer, intColumn As Integer
Dim lngRow As Long, lngHashNumber As Long, lngCount As Long
Dim dblStart As Double
vntCharacters = Array(„1“, „2“, „3“, „4“, „5“, „6“, „7“, „8“, „9“, _
„A“, „B“, „C“, „D“, „E“, „F“, „G“, „H“, „I“, „J“, „K“, „L“, „M“, _
„N“, „O“, „P“, „Q“, „R“, „S“, „T“, „U“, „V“, „W“, „X“, „Y“, „Z“, _
„a“, „b“, „c“, „d“, „e“, „f“, „g“, „h“, „i“, „j“, „k“, „l“, _
„m“, „n“, „o“, „p“, „q“, „r“, „s“, „t“, „u“, „v“, „w“, „x“, _
„y“, „z“)
intCharactersCount = UBound(vntCharacters) + 1
Do
vntRowsCount = Application.InputBox(„Wie viele Passwörter pro Spalte?“, _
„PasswortGenerator“, 10, , , , , 1)
If Not TypeName(vntRowsCount) = „Boolean“ Then
If vntRowsCount Fix(vntRowsCount) Or vntRowsCount > _
Rows.Count Or vntRowsCount Fix(vntColumnsCount) Or vntColumnsCount > _
Columns.Count Or vntColumnsCount 0 Then
lngStartMin = lngStart - (lngStart Mod 10)
lngStartMax = lngStart + 10 - (lngStart Mod 10)
Else
lngStartMin = lngStart
lngStartMax = lngStart
End If
For lngCounter = lngStartMin To 2 Step -10
If fncIsPrim(lngCounter - 1) Then lngMin = lngCounter - 1: Exit For
If fncIsPrim(lngCounter - 3) Then lngMin = lngCounter - 3: Exit For
If fncIsPrim(lngCounter - 7) Then lngMin = lngCounter - 7: Exit For
If fncIsPrim(lngCounter - 9) Then lngMin = lngCounter - 9: Exit For
Next
For lngCounter = lngStartMax To lngStartMax * 2 Step 10
If fncIsPrim(lngCounter + 1) Then lngMax = lngCounter + 1: Exit For
If fncIsPrim(lngCounter + 3) Then lngMax = lngCounter + 3: Exit For
If fncIsPrim(lngCounter + 7) Then lngMax = lngCounter + 7: Exit For
If fncIsPrim(lngCounter + 9) Then lngMax = lngCounter + 9: Exit For
Next
End Sub
Private Function fncIsPrim(ByVal lngTestNumber As Long) As Boolean
Dim lngCounter As Long
If lngTestNumber Mod 3 = 0 Then Exit Function
If lngTestNumber Mod 7 = 0 Then Exit Function
For lngCounter = 10 To CLng(lngTestNumber ^ 0.5) Step 10
If lngTestNumber Mod (lngCounter + 1) = 0 Then Exit Function
If lngTestNumber Mod (lngCounter + 3) = 0 Then Exit Function
If lngTestNumber Mod (lngCounter + 7) = 0 Then Exit Function
If lngTestNumber Mod (lngCounter + 9) = 0 Then Exit Function
Next
fncIsPrim = True
End Function
Danke für eure Hilfe!
Liebe Grüsse
bo
ps. Excel Version 2010