Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
Häufige FragenZufallszahlen
Autor: Peter Haserodt - Erstellt: -- - Letzte Revision: --
Zufallszahlen kann man immer gebrauchen.
Zuerst ein Modul mit zwei Testaufrufen.
' **************************************************************
' Modul: mdlZufallzahlen Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Sub Test_ZufallsZahlen_Direkt()
On Error GoTo Fehler
ZufallsZahlen Range("h2:h20"), 1, 49
Exit Sub
Fehler:
MsgBox "Fehler: " & vbCrLf & Err.Description
End Sub
Public Sub Test_ZufallsZahlen_AusZellen()
'benötigt in C2 den Bereich wie G10:G100
' in C3 die kleinste Zahl, in C4 die Größte Zahl
ZufallsZahlen Range(Range("C2").Value), Range("C3").Value, _
Range("C4").Value
Exit Sub
Fehler:
MsgBox "Fehler: " & vbCrLf & Err.Description
End Sub
Private Sub ZufallsZahlen(Bereich As Range, ByVal Von As Long, _
ByVal Bis As Long)
' #################################################
' Peter Haserodt 2004
Dim vx() As Variant, i As Long, k As Integer
On Error GoTo Fehler
Randomize Timer
With Bereich
ReDim vx(.Rows.Count - 1)
ReDim vx(.Rows.Count - 1, .Columns.Count - 1)
For i = 1 To .Rows.Count
For k = 1 To .Columns.Count
vx(i - 1, k - 1) = Int((Bis - Von + 1) * Rnd + Von)
Next k
Next i
.Value = vx()
End With
Exit Sub
Fehler:
MsgBox "Fehler: " & vbCrLf & Err.Description
End Sub
|
|
| A | B | C | D | 1 | | | | | 2 | | ZufallsBereich: | C10:G80 | | 3 | | Kleinste Zahl: | 3 | | 4 | | Größte Zahl: | 200 | | 5 | | | | | |
|
Als nächstes das ganze mit UserForm.
Die benötigten Steuerelemente sind im Code beschrieben.
' **************************************************************
' Modul: frmZufallsZahlen Typ = Userform
' **************************************************************
Option Explicit
' #################################################
'
' Peter Haserodt 2004
' Benötigte Steuerelemente:
' Commandbuttons: 2 Stück, Namen: cmdOK,cmdAbbrechen
' Textboxen: 2 Stück, Namen: txtMin, txtMax
' Ein RefEdit Name: refBereich
' Labels zum Beschriften
'
' #################################################
Private Sub cmdAbbrechen_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
' Eine etwas bessere Fehlerbehandlung kann sich jeder selbst einbauen
'Zum Beispiel ob in den Textboxen was drinsteht etc...
On Error GoTo Fehler
ZufallsZahlen Range(refBereich.Text), Val(txtMin), Val(txtMax)
Unload Me
Exit Sub
Fehler:
MsgBox "Fehler: " & vbCrLf & Err.Description
End Sub
Private Sub UserForm_Initialize()
On Error Resume Next
refBereich.Text = Selection.Address
End Sub
Private Sub ZufallsZahlen(Bereich As Range, ByVal Von As Long, _
ByVal Bis As Long)
Dim vx() As Variant, i As Long, k As Integer, iOldCalc As Variant
On Error GoTo Fehler
Randomize Timer
With Bereich
ReDim vx(.Rows.Count - 1)
ReDim vx(.Rows.Count - 1, .Columns.Count - 1)
For i = 1 To .Rows.Count
For k = 1 To .Columns.Count
vx(i - 1, k - 1) = Int((Bis - Von + 1) * Rnd + Von)
Next k
Next i
.Value = vx()
End With
Exit Sub
Fehler:
MsgBox "Fehler: " & vbCrLf & Err.Description
End Sub
' **************************************************************
' Modul: mdlStartZufall Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Sub StartZufallsZahlen()
frmZufallsZahlen.Show
End Sub
Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben