2016-12-07 68 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