Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Zufällige Auslosung mit Anzahlabfrage


Betrifft: Zufällige Auslosung mit Anzahlabfrage von: S.F
Geschrieben am: 01.10.2019 18:40:52

Hallo zusammen,
ich habe folgendes Problem wo mich meine VBA-Kenntnisse Verliesen.

Auf dem Bild sieht man mein Tabellenblatt und danach mein dazugehöriges Makro.


Sub Button_Auslosen_Klicken()

    Const strrange As String = "D2:D28"
    Dim intindex As Integer, intrnd As Integer
    Dim strtemp1 As String, strtemp2 As String
    Dim vararray As Variant
    vararray = Range(strrange)
    For intindex = UBound(vararray) To 1 Step -1
        Randomize Timer
        intrnd = Int((intindex * Rnd) + 1)
        strtemp1 = vararray(intrnd, 1)
        vararray(intrnd, 1) = vararray(intindex, 1)
        vararray(intindex, 1) = strtemp1
    Next
    Range(strrange) = vararray
    
End Sub

Ich habe auf der linken Seite eine Namensliste die sich bei einem neuen Teilnehmer um 1 erweitert. Das Programm von mir wir durch den Button (Auslosen) ausgeführt und mischt die Zahlen in der Spalte D:D zufällig durcheinander. Soweit so gut...es funktioniert auch alles.

Mein Problem ist jetzt das ich den Bereich jedes mal manuell an die Teilnehmeranzahl anpassen muss. Das heißt ich hätte gerne das bei 15 Teilnehmern auch nur die Zahlen 1-15 ausgelost werden und auch untereinander stehen. Bei meinem Programm werden dann die leeren Zellen auch mit verschoben.

Kann mir da jemand helfen?

Freundliche Grüße
S.F

  

Betrifft: AW: Zufällige Auslosung mit Anzahlabfrage von: Piet
Geschrieben am: 01.10.2019 18:50:32

Hallo

nur diesen Teil aendern, das ist alles. Einfach wenn man es weiss ...

    Dim vararray As Variant, lz1 As Long  '** neu
    'LastZell in Spalte A suchen
    lz1 = Cells(Rows.Count, 1).End(xlUp).Row
    vararray = Range("D2:D" & lz1)
mfg piet


  

Betrifft: AW: Zufällige Auslosung mit Anzahlabfrage von: S.F
Geschrieben am: 01.10.2019 20:26:32

Danke für die schnelle Hilfe. Hat mir total weiter geholfen;)

Gruß
S.F


  

Betrifft: AW: Zufällige Auslosung mit Anzahlabfrage von: onur
Geschrieben am: 01.10.2019 18:57:39

Sub Button_Auslosen_Klicken()
    Private Sub CommandButton1_Click()
    Dim LastRow, rng
    LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
    Set rng = Range("D2:D" & LastRow)
    Dim intindex As Integer, intrnd As Integer
    Dim strtemp1 As String, strtemp2 As String
    Dim vararray As Variant
    vararray = rng.Value
    For intindex = UBound(vararray) To 1 Step -1
        Randomize Timer
        intrnd = Int((intindex * Rnd) + 1)
        strtemp1 = vararray(intrnd, 1)
        vararray(intrnd, 1) = vararray(intindex, 1)
        vararray(intindex, 1) = strtemp1
    Next
    rng.Value = vararray
End Sub