2016-12-07 67 views
0

我搜索了互联网,但我似乎无法找到我的问题的答案,根据我看到的答案我应该没有问题。Excel VBA错误424调用子

许多代码是sl since的,因为它是从过去工作的东西复制面食。意图是在其功能后清理。

从我的用户表单传递7个字符串到子,但我不断收到424错误。

从用户窗体:

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感谢您的编辑! – 2016-12-07 14:47:59

+0

我试过使用'nextrow.text'注释掉这一行,并且注释掉了我以前解决方法的所有提及(使用'nextrow'副本)无济于事。任何其他方式,我可以看到这是否是问题? – Joren