Zufallsauswahl mit VB 5.0

MICLange

Grünschnabel
Hallo,

ich programmiere in der Schule mit VB 5.0
das heißt, ich kenne mich nicht groß artig aus, aber ein wenig kann ich schon smile

auf jedenfall möchte ich für private zwecke gerne ein programm erstellen in dem ich zufällig einen namen ausgeben kann
ich habe ca. 10 namen
jetzt soll immer ein name davon ausgewählt werden!
aber falls ein name davor schon ausgewählt wurde, soll er nicht nochmal angezeigt werden
ich habe schon einiges über random gelesen, aber ich weiß nicht wie ich das mit namen hinbekommen soll
hoffe ihr könnt mir da helfen

gruß
 
Am besten du speicherst die Namen in eine ListBox (in jede Zeile einen Namen). Dann ermittelst du eine Zahl zwischen 0 und der Anzahl der Listbox - 1. Den Namen liest du dann aus und löscht ihn aus der ListBox. So kriegst du keine doppelten Namen, da er ja nicht mehr in der ListBox vorhanden ist.


Der Doc!
 
Um die Namen zufällig auszuwählen, musst Du den Randomizer benutzen:

Code:
Private Sub Command1_Click()

Dim Wert1
Randomize   ' Zufallszahlengenerator initialisieren.

Wert1 = Int((10 * Rnd) + 1)   ' Zufallszahlen im Bereich von 1 bis 10
   ' generieren.
   
   MsgBox Wert1
End Sub

Mit dem ermittelten Wert kannst Du dann, wie vom Doc beschrieben, z.B. auf eine Listbox zugreifen.

Bitte benutze demnächst Groß- und Kleinschreibung in Deinen Posts, dann sind sie nicht so anstrengend zu lesen.

ronaldh
 
Wenn du eine Listbox füllst, hat jeder Eintrag einen Index, den sogenannten ListIndex. Wenn du also z.B. die 3 Zeile willst, kannst du den darin enthaltenen Wert mit
Visual Basic:
Text = List1.List(2) 'Zählung beginnt bei 0
auslesen.


Der Doc!
 
Warum so umständlich mit einer ListBox? Warum nicht ein richtiges Array?

Code:
Option Explicit
Dim VorName(9) As String    'Array für die Namen
Dim idxName As Integer      'Index der Namen
Dim oldName As String       'Speichert den alten Namen

Private Sub Command1_Click()
anfang:
    Randomize
    idxName = Int((9 * Rnd) + 0)
    If Not VorName(idxName) = oldName Then
        Label1.Caption = VorName(idxName)
        oldName = VorName(idxName)
    Else
        GoTo anfang
    End If
End Sub

Private Sub Form_Load()
    VorName(0) = "Peter"
    VorName(1) = "Susanne"
    VorName(2) = "Anke"
    VorName(3) = "Klaus"
    VorName(4) = "Frank"
    VorName(5) = "Hans"
    VorName(6) = "Beate"
    VorName(7) = "Cordula"
    VorName(8) = "Petra"
    VorName(9) = "Fritz"
End Sub

Zubehör: Form, 1 Command-Button, 1 Label
 
Hallo,

danke vielmal für die Tipps!

Ich möchte gerne das Programm jetzt auf eine Homepage einbinden!

Hab es dazu das ganze in nem ActiveX-Steuerelement eingefügt. Hab dann das mit dem Weitergabeassi. so zusammen gestellt das ich es auf ne HP machen kann. Der hat mir dann auch ein HTML File ausgespuckt. Jetzt aber geht aber die automatische Ermittlung nicht :/

Hier der Code

Visual Basic:
Option Explicit
Dim VorName(9) As String    'Array für die Namen
Dim idxName As Integer      'Index der Namen
Dim oldName As String       'Speichert den alten Namen

Private Sub Form_Load()
    VorName(0) = "da"
    VorName(1) = "daa"
    VorName(2) = "daaa"
    VorName(3) = "daaaa"
    VorName(4) = "daaaaa"
    VorName(5) = "daaaaaa
    VorName(6) = "daaaaaaa"
    VorName(7) = "daaaaaaaa"
    VorName(8) = "daaaaaaaaa"
    VorName(9) = "daaaaaaaaaa"
    przermittlung
End Sub

Function GetWochentag(dtmDate As Date) As String
  GetWochentag = WeekdayName(Weekday(dtmDate, vbMonday))
End Function

Public Sub przermittlung()
If GetWochentag(Now) = "Montag" Then
anfang:
    Randomize
    idxName = Int((9 * Rnd) + 0)
    If Not VorName(idxName) = oldName Then
        Label1.Caption = VorName(idxName)
        oldName = VorName(idxName)
    Else
        GoTo anfang
    End If
End If
End Sub

Wo ist das Problem?

Ist das auch der richtige Weg?

Ich möchte ein Programm auf einer HP einbinden, was mir jeden Montag einen anderen Namen ausspuckt
 
Zuletzt bearbeitet:
Das ActiveX-Steuerelement hat kein "Form Load ()" - Ereignis.
Benutze dafür das...

Code:
Private Sub UserControl_Initialize()
    VorName(0) = "da"
    VorName(1) = "daa"
    VorName(2) = "daaa"
    VorName(3) = "daaaa"
    VorName(4) = "daaaaa"
    VorName(5) = "daaaaaa"
    VorName(6) = "daaaaaaa"
    VorName(7) = "daaaaaaaa"
    VorName(8) = "daaaaaaaaa"
    VorName(9) = "daaaaaaaaaa"
    przermittlung
End Sub
 
Wunderbar, Danke!

Ok, jetzt nur noch eine Sache.
Jetzt macht der mir ja jedesmal was neues.
Ich schätz mal da das Programm immer "Neu gestartet" wird

Wie kann ich dieses Problem erheben.
Also das somit ein Name für eine Woche fest steht.
 
Mache doch das Ausführen von "przermittlung" vom Wochentag abhängig.
- Prüfen welcher Tag gerade ist
- Wenn Montag dann ja, sonst nicht.

Ups, sehe gerade dass Du das bereits getan hast. Wenn Du das Teil nur einmal am Montag starten soll dann setze doch ein Zähler ein, der hochzählt wenn es am Montag ausgeführt wurde, also als zweite Bedingung zum Ausführen. Speichere den Wochentag und dazu auch das aktuelle Datum (evtl in einer Textdatei die Du vorm ausführen ausliest). Als Bedingung vergleichst Du dann den Wochentag + Datum.
 
Zuletzt bearbeitet:
Zurück