在许多单元上生成随机字符VBA

时间:2019-03-18 09:21:41

标签: excel vba

我已经在VBA中创建了此脚本

Sub code_piece_motoculture()

    Randomize

    caractere = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    lettre_nombre = ""

    For i = 1 To 15
        nombre_alea = Int(Len(caractere) * Rnd) + 1
        lettre_nombre = lettre_nombre & Mid(caractere, nombre_alea, 1)
        If i = 5 Then lettre_nombre = lettre_nombre & "-"
        If i = 10 Then lettre_nombre = lettre_nombre & "-"
    Next

    Range("A1") = lettre_nombre

End Sub

我只在A1中有这个结果

ATBBM-YSHSS-G5ZVH

但是我想对单元格A2-> A3-> A4-> A5等使用不同的结果 你能帮我吗?

2 个答案:

答案 0 :(得分:0)

我肯定有清洁剂,但这将实现您想要的

Sub code_piece_motoculture()

    Randomize

    caractere = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    lettre_nombre = ""

    For j = 1 To 10 'entrer le nombre de lignes desiree
    For i = 1 To 15
        nombre_alea = Int(Len(caractere) * Rnd) + 1
        lettre_nombre = lettre_nombre & Mid(caractere, nombre_alea, 1)
        If i = 5 Then lettre_nombre = lettre_nombre & "-"
        If i = 10 Then lettre_nombre = lettre_nombre & "-"

    Next
    Range("A" & j) = lettre_nombre
    lettre_nombre = ""
    Next

End Sub

答案 1 :(得分:0)

尝试使用此功能...

Public Function GenerateRandomStuff() As String
    Dim i As Long, lngNumber As Long, lngBetween As Long

    For i = 1 To 15
        lngBetween = WorksheetFunction.RandBetween(1, 2)

        If lngBetween = 1 Then
            lngNumber = WorksheetFunction.RandBetween(48, 57)
        Else
            lngNumber = WorksheetFunction.RandBetween(65, 90)
        End If

        GenerateRandomStuff = GenerateRandomStuff & Chr(lngNumber)

        If i = 5 Then GenerateRandomStuff = GenerateRandomStuff & "-"
        If i = 10 Then GenerateRandomStuff = GenerateRandomStuff & "-"
    Next
End Function

...对我来说很好。

您可以将其添加到单元格中,如果要将宏添加到更多单元格中,则无需扩展宏,只需复制并粘贴公式...

=GenerateRandomStuff()

...如果您想阻止它每次刷新,请复制并粘贴特殊值就可以了。