Назначить новые объекты в коллекции случайным числом для свойства - VBA - PullRequest
0 голосов
/ 26 февраля 2019

Я создал новый модуль класса, который выглядит следующим образом:

Private pNum As Double


Public Property Get Num() As Double
    Num = pNum 
End Property
Public Property Let Num(Value As Double)
    pNum = Value
End Property

Я пытаюсь добавить случайные числа в коллекцию как свойство объекта.Это просто дает мне 3 объекта с одинаковым случайным числом.

Sub Add_number()
    Dim rand_num As Cnum 
    Set rand_num = New Cnum

    Dim RandColl As New Collection 

    Dim numCount As Integer
    numCount = 3


    Do
        RandColl.Add rand_num 
        rand_num.num = rnd()
    Loop Until RandColl.Count = numCount


End Sub

1 Ответ

0 голосов
/ 26 февраля 2019

Это происходит потому, что вы добавляете каждый раз один и тот же экземпляр объекта.Напишите свой код так:

Sub Add_number()
    Dim rand_num As Cnum 
    'Set rand_num = New Cnum '<-- remove the unique initialization from here
    Dim RandColl As New Collection 

    Dim numCount As Integer
    numCount = 3
    Randomize '<-- also, add the call to the randomize module

    Do
        Set rand_num = New Cnum '<-- move it in the loop to create a new instance of Cnum each time
        RandColl.Add rand_num 
        rand_num.num = rnd()
    Loop Until RandColl.Count = numCount


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