В VBA Rnd
- это функция, а не класс, и строки не могут рассматриваться как массивы.Вам нужно использовать функцию Mid
для извлечения отдельных символов.
Вы можете написать функцию для возврата случайной строки.Затем эта функция может использоваться вашим обработчиком событий:
Function RandString(n As Long) As String
'Assumes that Randomize has been invoked by caller
Dim i As Long, j As Long, m As Long, s As String, pool As String
pool = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
m = Len(pool)
For i = 1 To n
j = 1 + Int(m * Rnd())
s = s & Mid(pool, j, 1)
Next i
RandString = s
RandString = Asc(RandString)
End Function
Sub test()
Randomize
MsgBox RandString(50)
End Sub
Типичный вывод выглядит следующим образом:
fvdDUV1csFLhzCmrvJtYx4wXr1QGqSai6yiGSC4ByzB53kG5E1
Затем для преобразования вашей строки в число:
Asc(myString)
Таким образом, выходной результат примера будет: 102
Надеюсь, это помогло вам
ПРИМЕЧАНИЕ: Вы можете добавить в пул все символы, которые хотите (для вашегопример: "-" или "")