Генерация случайных символов VBA на многих ячейках - PullRequest
0 голосов
/ 18 марта 2019

Я создал этот скрипт в 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 ect Можете ли вы помочь мне?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Попробуйте эту функцию ...

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()

... если вы хотите, чтобы он не обновлялся каждый раз, скопируйте и вставьте специальные значения, и все готово.

0 голосов
/ 18 марта 2019

Я уверен, что есть чище, но это достигнет того, что вы ищете

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...