2017-07-17 20 views
0

Ich bin neu bei VBA-Codierung und arbeitet an einem Match-Code. Der Code funktioniert einwandfrei, wenn ich den Code in "Datenblatt" ausführe (das Blatt, auf dem alle meine Daten liegen und wo die Übereinstimmung gefunden werden muss), aber wenn ich den Code auf der Startseite leite (Blatt 1 mit Benutzerformularen) Der Code ist debuggen und sagt "Runtime Error 13". Kann jemand sagen, was das Problem ist?Runtime Error 13 - Mismatch

Und kann mir jemand sagen, warum mein "If isError" nicht funktioniert?

Vielen Dank im Voraus!

Br

'Find SKU and Test number 
Dim icol As Integer 


Sheet13.Range("XFD2") = UserForm2.ComboBox1.Value 'Sættes = ComboBox1.value 
Sheet13.Range("XFD3") = UserForm2.ComboBox2.Value 'Sættes = ComboBox2.value 



icol = [Sheet13.MATCH(XFD2&XFD3,A:A&Q:Q,0)] 'Match af værdien for vores SKU og test nr 


With ThisWorkbook.Worksheets("Data sheet") 



'If SKU or Test number not found, then messagebox 
If IsError("A:A") Then MsgBox "SKU not found": Exit Sub 
If IsError("Q:Q") Then MsgBox "Test number not found": Exit Sub 


    'Add test result/next step and comment 
    .Cells(icol, 30).Value = Me.ComboBox3.Value 
    .Cells(icol, 30 + 1).Value = Me.Comments_To_Result.Value 



End With 


End If 

Set objFSO = Nothing 
Set openDialog = Nothing 

Range("XFD2").Clear 
Range("XFD3").Clear 
+0

Auf welcher Zeile erhalten Sie den Fehler? – Vityata

+0

Oh Entschuldigung. Es ist eingeschaltet: icol = [Blatt13.MATCH (XFD2 & XFD3, A: A & Q: Q, 0)] 'Match af værdien für vores SKU und test nr – broder123

+0

Sie deklarierten 'icol' als' Integer' und die Rückkehr von '[Sheet13 .MATCH (XFD2 & XFD3, A: A & Q: Q, 0)] 'ist keine Ganzzahl, deshalb erhalten Sie ein [' Type mismatch (Error 13) '] (https://msdn.microsoft.com/en-us /library/aa264979(v=vs.60).aspx) – Tehscript

Antwort

0

icol sollte wie folgt sein:

icol = Application.match(arg1, arg2, arg3)

Siehe die Proben in MSDN:

var = Application.Match(Cells(iRow, 1).Value, Worksheets(iSheet).Columns(1), 0) 

Betreffend If IsError("A:A") Then MsgBox "SKU not found": Exit Sub, machst du es falsch. Ich nehme an, dass Sie alle Zellen in der ersten Spalte durchlaufen wollen und ob einer von ihnen ein Fehler ist. Sie brauchen dafür eine Schleife. Dies ist ein wirklich einfaches, aber Sie sollten es irgendwie in Ihrem Code implementieren:

Option Explicit 

Public Sub TestMe() 

    Dim rng As Range 

    For Each rng In Range("A:A") 
     If IsError(rng) Then Debug.Print rng.Address 
    Next rng 

End Sub 
+0

Wenn ich icol = Application.Match ("XFD2" & "XFD3", "A: A" & "Q: Q", 0) verwende, debuggt der Code mit Fehler 13 wieder in dieser Zeile: .Cells (icol, 30) .Value = Me.ComboBox3.Value – broder123

+0

@ broder123 Sie haben etwa 2 kritische Fehler in Ihrer Formel. Lesen Sie den MSDN-Link erneut und versuchen Sie, ihn zu replizieren. So etwas funktioniert: 'icol = Application.Match (Bereich (" A2 "), Bereich (" B: B "), 0)' – Vityata

+0

Kannst du auf die Errros hinweisen? Ich habe versucht, sie zu finden, aber ich kann diesen Code nicht finden ... – broder123