2017-07-17 2 views
0

Je suis nouveau au codage VBA et je travaille sur un code de correspondance. Le code fonctionne très bien quand je cours le code dans "Fiche de données" (la feuille était toutes mes données et la correspondance devait être trouvée), mais quand je suis exécuté le code sur la page de garde (feuille 1 avec userforms) le code est debuggen et dit "Runtime Error 13". Quelqu'un peut-il dire quel est le problème?Erreur d'exécution 13 - Mismatch

Et quelqu'un peut-il me dire pourquoi mon "If isError" ne fonctionne pas?

Merci d'avance!

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

Sur quelle ligne rencontrez-vous l'erreur? – Vityata

+0

Oh désolé. C'est sur: icol = [Sheet13.MATCH (XFD2 & XFD3, A: A & Q: Q, 0)] 'Correspond à un værdien pour vores SKU og test nr – broder123

+0

Vous avez déclaré 'icol' comme' Integer' et le retour de '[Sheet13 .MATCH (XFD2 & XFD3, A: A et Q: Q, 0)] 'n'est pas un nombre entier, c'est pourquoi vous obtenez un [' Type incompatibilité (Erreur 13) '] (https://msdn.microsoft.com/fr-fr /library/aa264979(v=vs.60).aspx) – Tehscript

Répondre

0

icol devrait ressembler à ceci:

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

Voir les échantillons MSDN:

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

En ce qui concerne If IsError("A:A") Then MsgBox "SKU not found": Exit Sub, vous le faites à tort. Je suppose que vous voulez parcourir toutes les cellules de la première colonne et savoir si l'une d'entre elles est une erreur. Vous avez besoin d'une boucle pour cela. Ceci est très simple, mais vous devriez l'implémenter dans votre code:

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

Si j'utilise icol = Application.Match ("XFD2" & "XFD3", "A: A" & "Q: Q", 0) le code débogage avec erreur 13 encore dans cette ligne: .Cells (icol, 30) .Value = Me.ComboBox3.Value – broder123

+0

@ broder123 vous avez environ 2 erreurs critiques dans votre formule. Relisez le lien MSDN et essayez de le répliquer. Quelque chose comme ça fonctionne: 'icol = Application.Match (Range (" A2 "), plage (" B: B "), 0)' – Vityata

+0

Pouvez-vous indiquer les erreurs? J'ai essayé de les trouver, mais ne peux pas figurer ce code ... – broder123