1

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

    Private Sub UserForm_Initialize()

Dim SignedInNames() As String
Dim NumberSignedIn As Integer
    NumberSignedIn = 1

ReDim SignedInNames(NumberSignedIn + 1)


Dim Names() As Variant
Names = Range("OFFSET('People Info'!$A$1,1,0,COUNTA('People Info'!$A:$A)-1,1)")

PersonNameComboBox.List = Names

SignedInListBox.List = SignedInNames
End Sub

Private Sub SignInCommandButton_Click()

SignedInNames = Add(PersonNameComboBox.Value) 'The code crashers here
NumberSignedIn = NumberSignedIn + 1

End Sub

Я изменил это, так что теперь это

Private Sub UserForm_Initialize()

Dim SignedInNames() As String
Dim NumberSignedIn As Integer
    NumberSignedIn = 1

ReDim SignedInNames(0 To NumberSignedIn)


Dim Names() As Variant
Names = Range("OFFSET('People Info'!$A$1,1,0,COUNTA('People Info'!$A:$A)-1,1)")

PersonNameComboBox.List = Names

SignedInListBox.List = SignedInNames
End Sub

Private Sub SignInCommandButton_Click()

ReDim Preserve SignedInNames(0 To NumberSignedIn)
SignedInNames(NumberSignedIn) = PersonNameComboBox.Value
NumberSignedIn = NumberSignedIn + 1
'ReDim SignedInNames(o To NumberSignedIn)
SignedInListBox.List = SignedInNames
'SignedInNames = Add(PersonNameComboBox.Value)
'SignedInNames(NumberSignedIn) = PersonNameComboBox.Value
'NumberSignedIn = NumberSignedIn + 1

End Sub

Теперь я получаю сообщение об ошибке, когда он попадает на линию

ReDim Preserve SignedInNames(0 To NumberSignedIn)

это показывает ошибку "Переменная не определена"

1 ответ1

0

Я решил исходную проблему, изменив способ настройки массива. Затем я исправил вторую проблему, сделав переменные, которые я использовал, глобальными.

Dim SignedInNames() As String
Dim NumberSignedIn As Integer
Dim Names() As Variant

Private Sub UserForm_Initialize()


NumberSignedIn = 1

ReDim SignedInNames(0 To NumberSignedIn)


Dim Names() As Variant
Names = Range("OFFSET('People Info'!$A$1,1,0,COUNTA('People Info'!$A:$A)-1,1)")

PersonNameComboBox.List = Names

SignedInListBox.List = SignedInNames
End Sub

Private Sub SignInCommandButton_Click()



ReDim Preserve SignedInNames(0 To NumberSignedIn)
SignedInNames(NumberSignedIn) = PersonNameComboBox.Value
NumberSignedIn = NumberSignedIn + 1
SignedInListBox.List = SignedInNames


End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .