2015-05-21 4 views
3

Привет, я скопировал/вставлял код из ответа TheEngineer - я немного изменил код, поэтому он собирает данные из массива вместо рабочего листа. Я продолжаю получать RuneTime Error 424, и когда я читаю MS-помощь на Error 424, он говорит, что мне нужно включить Microsoft DAO 3.5 Object Library. Мой Excel имеет только 3.6. Думаю, новая версия? Но я все еще получаю сообщение об ошибке. Кто-нибудь может мне помочь??Динамическое добавление CheckBoxes - Ошибка выполнения 424

Это код:

Option Explicit 

Private Sub UserForm_Initialize() 
    Dim LastColumn As Long 
    Dim i   As Long 
    Dim chkBox  As MSForms.CheckBox 

    Call test ' Here i run array code (The array is filled with data) 

    TestArr = UniqueProvisionArray 
    LastColumn = UBound(TestArr) 

    For i = 0 To LastColumn 
     Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i) 
     chkBox.Caption = TestArr(i).Value 
     chkBox.Left = 5 
     chkBox.Top = 5 + ((i - 1) * 20) 
    Next i 
End Sub 

ответ

3

Вы получаете эту ошибку из-за линии chkBox.Caption = TestArr(i).Value. Это неверный способ извлечения данных из массива.

Вот пример кода, чтобы заставить его работать.

Private Sub UserForm_Initialize() 
    Dim LastColumn As Long 
    Dim i   As Long 
    Dim chkBox  As MSForms.CheckBox 
    Dim TestArr(1) 

    TestArr(0) = 1 
    TestArr(1) = 2 

    LastColumn = UBound(TestArr) 

    For i = 0 To LastColumn 
     Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i) 
     chkBox.Caption = TestArr(i) 
     chkBox.Left = 5 
     chkBox.Top = 5 + ((i - 1) * 20) 
    Next i 
End Sub 

одна вещь ...

Вы можете изменить chkBox.Top = 5 + ((i - 1) * 20) к chkBox.Top = 5 + (i * 20) иначе ваш первый Checkbox не будет видно;)

+1

Спасибо тааак много! Вот почему я люблю И ненавижу VBA - Один глупый .value messes everthing up, но когда он исправлен, это похоже на оргазм :-D – ERSTKGN

+1

Теперь это комплимент! – brettdj

Смежные вопросы