2016-12-07 2 views
0

Я просмотрел интернет, но я не могу найти ответ на свой вопрос, согласно ответам, которые я видел, у меня не должно было быть проблемы.Ошибка Excel VBA 424 вызов sub

Большая часть кода неаккуратная, поскольку это копия макаронных изделий из того, что раньше работало. Намерение состояло в очистке после того, как оно было функциональным.

Im передавая 7 строк к югу от моей пользовательской формы, но я продолжаю получать ошибку 424.

От UserForm:

Sub CommandButton1_Click() 

Dim Bericht As Variant 

Dim RuilingOfVermissing As String 
Dim Benaming As String 
Dim NSN As String 
Dim Aantal As String 
Dim Bijzonderheden As String 
Dim DatumIn As String 
Dim Naam As String 


'Check verplichte velden 
If OptionButton1.Value = False And OptionButton2.Value = False Then 
    Bericht = MsgBox("Selecteer Ruiling of Vermissing", vbOKOnly) 
    GoTo ErrorExit 
ElseIf OptionButton1.Value = True And OptionButton2.Value = True Then 
    Bericht = MsgBox("Selecteer Ruiling OF Vermissing, niet allebei", vbOKOnly) 
    GoTo ErrorExit 
ElseIf OptionButton1.Value = True Then 
    RuilingOfVermissing = "Ruiling" 
ElseIf OptionButton2.Value = True Then 
    RuilingOfVermissing = "Vermissing" 
End If 


If Len(TextBox2 & vbNullString) = 0 Then 
    Bericht = MsgBox("Vul een benaming in", vbOKOnly) 
    GoTo ErrorExit 
ElseIf Len(TextBox3 & vbNullString) = 0 Then 
    Bericht = MsgBox("Vul een NSN in", vbOKOnly) 
    GoTo ErrorExit 
ElseIf Len(TextBox4 & vbNullString) = 0 Then 
    Bericht = MsgBox("Vul een aantal in", vbOKOnly) 
    GoTo ErrorExit 
ElseIf Len(TextBox5 & vbNullString) = 0 Then 
    Bericht = MsgBox("Vul een 'datum in' in", vbOKOnly) 
    GoTo ErrorExit 
ElseIf Len(TextBox9 & vbNullString) = 0 Then 
    Bericht = MsgBox("Vul je naam in", vbOKOnly) 
    GoTo ErrorExit 
End If 

'Niet verplicht veld ("bijzonderheden") aanpassen naar spatie om Null te voorkomen 
If Len(TextBox7 & vbNullString) = 0 Then 
    TextBox7.Text = "-" 
End If 

Benaming = TextBox2.Text 
NSN = TextBox3.Text 
Aantal = TextBox4.Text 
Bijzonderheden = TextBox7.Text 
DatumIn = TextBox5.Text 
Naam = TextBox9.Text 

RuilVernis.schrijven RuilingOfVermissing, Benaming, NSN, Aantal, Bijzonderheden, DatumIn, Naam 

ErrorExit: 
    Exit Sub 

End Sub 

От вызываемых подразделов:

Sub schrijven(Optional RuilingOfVermissing As String, _ 
Optional Benaming As String, _ 
Optional NSN As String, _ 
Optional Aantal As String, _ 
Optional Bijzonderheden As String, _ 
Optional DatumIn As String, _ 
Optional Naam As String) 

Dim Nextrow As Variant 

Sheets("Database").Select 

Nextrow = Sheets("Database").Range("A65536").End(xlUp).Row + 1 

Sheets("Database").Range("A" & Nextrow) = Nextrow.Text 
Sheets("Database").Range("B" & Nextrow) = RuilingOfVermissing 
Sheets("Database").Range("C" & Nextrow) = Benaming 
Sheets("Database").Range("D" & Nextrow) = NSN 
Sheets("Database").Range("E" & Nextrow) = Aantal 
Sheets("Database").Range("F" & Nextrow) = Bijzonderheden 
Sheets("Database").Range("G" & Nextrow) = DatumIn 
Sheets("Database").Range("I" & Nextrow) = Naam 

Sheets("Start").Select 

Unload UserForm1 
UserForm1.Show 

Save 

End Sub 

Когда я бег 424 точек на:

RuilVernis.schrijven RuilingOfVermissing, Benaming, NSN, Aantal, Bijzonderheden, DatumIn, Naam' 

Что я делаю неправильно?

Большое спасибо заранее.

+3

Я хотел бы предложить шагая через код до тех пор, пока вы уверены, что это точная линия это не удается, и затем, глядя в окно местные (переменные), чтобы выяснить, что является неопределенным –

ответ

4

Здесь вы объявляете Nextrow как vriant

Dim Nextrow As Variant 

присваивается Nextrow числовое значение. Nextrow теперь эффективно число.

Nextrow = Sheets("Database").Range("A65536").End(xlUp).Row + 1 

Поскольку числовые значения не имеют Text свойство, возникает ошибка 424.

Sheets("Database").Range("A" & Nextrow) = Nextrow.Text 
+0

Хороший улов, я думаю, что это. Ошибка поднимается из Userform при вызове функции на 'schrijven', но ошибка действительно возникает внутри этой функции по причине, о которой вы указываете. –

+0

@DavidZemens Редактировать! –

+0

Я пробовал комментировать строку, используя 'nextrow.text', и прокомментировал все упоминания о моем предыдущем обходном пути (используя дубликат' nextrow') безрезультатно. Любые другие способы я могу понять, если это проблема? – Joren

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