Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

VBS Zufallsbuchstabe





Frage

Hi. Wie kann ich mit VBScript einen Zufallsbuchstaben erzeugen?

Antwort 1 von echoslider

edit. habs hinbekommen.

zahl = Int((maxzahl * Rnd) + 1)
If zahl = 1 Then buchstabe = "A"

Antwort 2 von CaroS

Was hältst Du von
X = Code(Int(maxzahl * Rnd) + 1) ?

Spart bei einer größeren Anzahl Buchstaben die vielen IFs.

(Bem.: Nur beim Namen der Funktion Code() bin ich mir im Moment nicht ganz sicher, ob sie genau so heißt, habe auch gerade nichts zum Nachschlagen. Aber irgend so etwas muss es geben, was den ASCII-Code direkt in das entsprechende Zeichen umwandelt.)

Gruß, CaroS

Antwort 3 von rfb

CaroS´ Vorschlag ist wohl schon sinnvoller, allerdings, wenn du auch Umlaute und sonstige Sonderzeichen (die nicht neben den gewohnten Buchstaben im ASCII-Code eingereiht sind) dabei haben willst, ist es einfacher, alle benötigten Zeichen in ein Array zu packen (oder einen String und darin die einzelnen Zeichen wie aus einem Array rauspicken) und die Zufallsfunktion einfach über den Array-Index laufen zu lassen.
Dies kombiniert die freie Wählbarkeit der Zeichen (A1) mit der einfachen Zuordnung ohne if (A2).

Antwort 4 von nighty

hi all :)

ermittelt 10 buchstaben der gross bzw kleinschreibung

gruss nighty

Option Explicit
Sub makro01()
Randomize Timer
ReDim zuzahl(52) As String
Dim zahl(52) As Variant
Dim endeindex As Integer
Dim allezahlen As Integer
Dim ziehung As Integer
Dim gezogen As Integer
Dim zaehler1 As Integer
endeindex = 52
For allezahlen = 97 To 122
zuzahl(allezahlen - 96) = Chr$(allezahlen)
Next allezahlen
For allezahlen = 65 To 90
zuzahl(allezahlen - 64 + 26) = Chr$(allezahlen)
Next allezahlen
For ziehung = 1 To 10
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(1, 1) = Cells(1, 1) + zahl(ziehung)
Next ziehung
End Sub

Antwort 5 von nighty

hi all :)

oder noch eine variante gross wie klein buchstaben a bis z und zahlen 0 bis 9

gruss nighty

Option Explicit
Sub makro01()
Randomize Timer
ReDim zuzahl(61) As String
Dim zahl(61) As Variant
Dim endeindex As Integer
Dim allezahlen As Integer
Dim ziehung As Integer
Dim gezogen As Integer
Dim zaehler1 As Integer
endeindex = 61
For allezahlen = 97 To 122
zuzahl(allezahlen - 97) = Chr$(allezahlen)
Next allezahlen
For allezahlen = 65 To 90
zuzahl(allezahlen - 65 + 26) = Chr$(allezahlen)
Next allezahlen
For allezahlen = 0 To 9
zuzahl(allezahlen + 52) = Mid(Str$(allezahlen), 2, 1)
Next allezahlen
For ziehung = 1 To 10
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(1, 1) = Cells(1, 1) & zahl(ziehung)
Next ziehung
Cells(1, 1) = Trim(Cells(1, 1))
End Sub

Antwort 6 von nighty

hi all :)

ups korrigiert :))

gruss nighty

Option Explicit
Sub makro01()
Randomize Timer
ReDim zuzahl(61) As String
Dim zahl(61) As Variant
Dim endeindex As Integer
Dim allezahlen As Integer
Dim ziehung As Integer
Dim gezogen As Integer
Dim zaehler1 As Integer
endeindex = 61
For allezahlen = 97 To 122
zuzahl(allezahlen - 97) = Chr$(allezahlen)
Next allezahlen
For allezahlen = 65 To 90
zuzahl(allezahlen - 65 + 26) = Chr$(allezahlen)
Next allezahlen
For allezahlen = 0 To 9
zuzahl(allezahlen + 52) = Mid(Str$(allezahlen), 2, 1)
Next allezahlen
For ziehung = 1 To 10
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(1, 1) = Cells(1, 1) & zahl(ziehung)
Next ziehung
End Sub