• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Random Codes Genereren met een Macro in Excel

Status
Niet open voor verdere reacties.

vinemaster

Gebruiker
Lid geworden
23 mei 2012
Berichten
41
Kan iemand mij helpen met het uitbreiden van onderstaande macro. De basis is het genereren van Random codes.

Sub GenerateRandom()
Dim i As Long
For i = 1 To 100
Range("A" & i) = Rnd()
Next i
End Sub

Het enige wat ik (voorlopig) wil toevoegen is een minimale en een maximale waarde, maar ik loop hier op vast.
Nu heb ik het maken van macro's zelf aangeleerd en daarom ziet het er misschien anders uit dan jullie gewend zijn:

Sub Random_Codes()
'
' Random_Codes Macro
' Bijvoorbeeld voor de Lidnummers van de VOORBEELD
'

Dim test3 As String
test3 = InputBox("Vul het aantal gewenste codes in", "Aantal Random Codes", "25")
Dim test2 As String
test2 = InputBox("Vul het onderwerp in", "Omschrijving Codes", "VOORBEELD")
Dim test4 As String
test4 = InputBox("Onder welke naam moet het bestand opgeslagen worden", "Opslaan Als", "" & test2 & Format(Now, " dd-mm-yyyy") & ".xls")

Dim test5 As String
test5 = InputBox("Vul de minimale waarde in", "Laagste waarde van de reeks", "20150001")
Dim test6 As String
test5 = InputBox("Vul de maximale waarde in", "Hoogste waarde van de reeks", "20151500")

'
Range("A1").Select
ActiveCell.FormulaR1C1 = test2
Range("A2").Select
ActiveCell.FormulaR1C1 = "=RANDBETWEEN(20150001,20151500)"
Columns("A:A").EntireColumn.AutoFit
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & test3 + 1), Type:=xlFillDefault
Range("A2:A" & test3 + 1).Select

End Sub

Bij de roodgemarkeerde zin had ik oorspronkelijk deze tekst staan, maar dat wordt niet geaccepteerd.
ActiveCell.FormulaR1C1 = "=RANDBETWEEN(test5,test6)"

Kunnen jullie mij misschien verder helpen?
 
dat komt omdat test5 en test6 zijn gedifinieerd als string. RANDBETWEEN heeft als input 2 getallen nodig
 
en de oplossing :)

Helaas ben ik nog niet gevorderd genoeg om nu dan automatisch te begrijpen wat de oplossing is.
Ik heb long en integer ook geprobeerd, maar die lijken niet te werken.

Heb jij suggesties?
 
Nog afgezien het feit dat je nodeloos cellen selecteert, wat de snelheid vertraagt, ziet je formule er zo uit:
Code:
With Range("A2")
    .FormulaR1C1 = "=RANDBETWEEN(" & test5 & "," & test6 & ")"
    .AutoFill Destination:=Range("A2:A" & test3 + 1), Type:=xlFillDefault
End With
 
Laatst bewerkt:
Ik denk dat deze uw probleem oplost:
Code:
Sub Random_Codes()
'
' Random_Codes Macro
' Bijvoorbeeld voor de Lidnummers van de VOORBEELD
'

Dim test3 As String
Dim test2 As String
Dim test4 As String
Dim test5 As Long
Dim test6 As Long
test3 = InputBox("Vul het aantal gewenste codes in", "Aantal Random Codes", "25")
test2 = InputBox("Vul het onderwerp in", "Omschrijving Codes", "VOORBEELD")
test4 = InputBox("Onder welke naam moet het bestand opgeslagen worden", "Opslaan Als", "" & test2 & Format(Now, " dd-mm-yyyy") & ".xls")
test5 = Val(InputBox("Vul de minimale waarde in", "Laagste waarde van de reeks", "50001"))
test6 = Val(InputBox("Vul de maximale waarde in", "Hoogste waarde van de reeks", "51500"))
'
Range("A1").FormulaR1C1 = test2
For rij = 2 To test3
 Range("A" & rij) = WorksheetFunction.RandBetween(test5, test6)
Next
Columns("A:A").EntireColumn.AutoFit
'Range("A2:A" & test3 + 1).Select
End Sub
 
Top

Bedankt Cobbe,

Jouw versie werkt inderdaad.
Zoals ik al zei, het maken van Macro's is zelf aangeleerd en vooral op basis van Macro Opnemen.
Met dit soort tips/suggesties kom ik weer een stap verder, daarom ook bedankt voor de andere opmerkingen.
Eerdaags toch maar een keer een cursusje volgen ergens.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan