Почему функция ниже не возвращает никакого значения и всегда возвращает пустое - PullRequest
0 голосов
/ 14 января 2020

Ниже приведена моя программа для получения случайного числа из функции с именем 'RandomNum'

Sub Test()

Dim RandomNo As Variant

RandomNo = RandomNum(RandomNo)
Range("B6").Value = RandomNo

End Sub

Ниже приведен код функции с именем 'RandomNum', и она используется для создания 8-ди git случайная буквенная цифра c текст. Всегда возвращает пустое значение основной функции

Public Function RandomNum(RandomNo As Variant) As Variant

alphaNumericText = UCase("abcdefghijklmnopqrstuvwxyz0123456789")
alphaText = UCase("abcdefghijklmnopqrstuvwxyz")

RandomNo = ""
Randomize
For i = 1 To 8
    RandomNo = RandomNo & Mid$(alphaNumericText, Int(Rnd() * Len(alphaNumericText) + 1), 1)
Next

End Function

1 Ответ

4 голосов
/ 14 января 2020

Я бы переписал так, чтобы функция возвращала случайную буквенную цифру c String; нет необходимости пытаться передать параметр ByRef:

Public Function RandomAlphaNumeric() As String
    Dim alphaNumericText As String
    alphaNumericText = UCase("abcdefghijklmnopqrstuvwxyz0123456789")

    Randomize
    For i = 1 To 8
        RandomAlphaNumeric = RandomAlphaNumeric & Mid$(alphaNumericText, Int(Rnd() * Len(alphaNumericText) + 1), 1)
    Next
End Function

Sub Test()
    Range("B6").Value = RandomAlphaNumeric
End Sub

Вы даже можете добавить функциональность для передачи необязательного параметра length вместо жесткого кодирования 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...