| |

Visual-Basic EinsteigerUnbekannter Fehler | |  | Autor: djinty | Datum: 09.07.10 14:13 |
| Hallo liebes Board, ich bin gerade dabei einen Namensgenerator zu erstellen, das ganze soll wie folgt aussehen:
2 Option-Buttons für die Auswahl des Landes, aus dem der Name stammen soll (England, Deutschland).
1 Textfeld für die Anzahl der zu generierenden Namen.
1 CommandButton "Generate".
Ich mache das ganze im Moment als Makro mit VBA in einem Excel Dokument, indem auch ein paar vorgefertigte Namen drinnen stehen. Ich lasse mir die generierten Namen anschließend in ein File schreiben. PS: ich mache das ganze zur Zeit noch optional mit Bezeichnungsfeldern, da ich Anfangs nur einen Namen generieren wollte.
Bis hierhin hat alles wunderbar funktioniert. Dann bin ich jedoch auf die Überlegung gekommen, dass durch die geringe Anzahl an verfügbaren Namen die Wahrscheinlichkeit groß ist, dass gleiche Namen generiert werden. Somit woltle ich das File pro Generations-Durchgang vorher auslesen und überprüfen ob der soeben generierte Name bereits vorhanden ist. Falls ja, soll er den Durchlauf wiederholen.
Im Zuge der Überprüfung tritt jedoch ein Fehler mit den Variablen auf "Laufzeitfehler '9': Index außerhalb des gültigen Bereichs". Der Fehler tritt bei folgender Zeile auf:
"Line Input #F, sLines(nLines)"
Ich habe nun schon versucht, die Variablen als global zu deklarieren bzw. habe die Typen überprüft. Ich finde den Fehler jedoch nicht, vielleicht könnt ihr mir ja weiter helfen, hier mal der Code:
Public Function FileExists(ByVal sFile As String) As Boolean
' Der Parameter sFile enthält den zu prüfenden Dateinamen
Dim Size As Long
On Local Error Resume Next
Size = FileLen(sFile)
FileExists = (Err = 0)
On Local Error GoTo 0
End Function
Private Sub cmd1_Click()
Dim anzahl, F, zz1, zz2, Obergrenze, Untergrenze As Integer
Dim nLines As Long
Dim vor, nach, sFile, sLines() As String
If ob1.Value = False And ob2.Value = False Then
MsgBox ("Bitte wählen Sie ein Land aus!")
End If
If IsNumeric(txt1.Text) = False Or txt1.Text = "" Then
MsgBox ("Bitte geben Sie eine Zahl ein!")
Else
anzahl = CInt(txt1.Text)
End If
Obergrenze = 9
Untergrenze = 2
nLines = 1
For i = 1 To anzahl
onceagain:
zz1 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
zz2 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
If ob1.Value = True Then
vor = CStr(Range("B" & zz1 & "").Text)
nach = CStr(Range("C" & zz2 & "").Text)
lbl3.Caption = vor
lbl4.Caption = nach
sFile = "H:\data\engnames.txt"
F = FreeFile
' Anzahl der Zeilen in der Textdatei ermitteln
If FileExists(sFile) = True Then
Open sFile For Input As #F
While Not EOF(F)
Line Input #F, sLines(nLines)
nLines = nLines + 1
Wend
Close #F
For j = 1 To nLines
If sLines(j) = vor & " " & nach Then
GoTo onceagain
End If
Next j
End If
Open sFile For Append As #F
Print #F, lbl3.Caption & " " & lbl4.Caption
Close #F
ElseIf ob2.Value = True Then
vor = CStr(Range("E" & zz1 & "").Text)
nach = CStr(Range("F" & zz2 & "").Text)
lbl3.Caption = vor
lbl4.Caption = nach
sFile = "H:\data\gernames.txt"
F = FreeFile
' Anzahl der Zeilen in der Textdatei ermitteln
If FileExists(sFile) = True Then
Open sFile For Input As #F
While Not EOF(F)
Line Input #F, sLines(nLines)
nLines = nLines + 1
Wend
Close #F
For j = 1 To nLines
If sLines(j) = vor & " " & nach Then
GoTo onceagain
End If
Next j
End If
Open sFile For Append As #F
Print #F, lbl3.Caption & " " & lbl4.Caption
Close #F
End If
Next i
End Sub Vielen Dank schon mal im Voraus und lg!
Beitrag wurde zuletzt am 09.07.10 um 14:22:07 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|