J'ai deux fonctions principales, la première est search_bank. Il parcourt les colonnes Credits, Type et Store, cellule par cellule et détermine si nous avons une correspondance ou non. S'il y a correspondance, elle renvoie True et, en tant qu'effet secondaire, change la couleur de la cellule correspondante. J'utilise pour tester la première fonction. Le problème que j'ai est que je reçois un Erreur d'exécution '424': Objet requis sans indication d'où le problème est.VBA: La fonction donne "Run time error '424': Objet requis" Erreur lors de l'appel
Voici la première fonction:
Function search_bank(Store As String, amount As Double, Amex As Boolean) As Boolean
Dim m_store As Range
Dim m_type As Range
Dim Credit_Amt_Col As Range
Set m_store = bank_sheet.Range("1:1").Find("M_STORE")
Set m_type = bank_sheet.Range("1:1").Find("M_TYPE")
Set Credit_Amt_Col = bank_sheet.Range("1:1").Find("Credit Amt")
search_bank = False
Dim i As Long
For i = 1 To 9000
If Not search_bank Then
Dim store_cell As Range
Dim type_cell As Range
Dim credit_cell As Range
Set store_cell = Worksheets(2).Cells(i, m_store.Column)
Set type_cell = Worksheets(2).Cells(i, m_type.Column)
Set credit_cell = Worksheets(2).Cells(i, Credit_Amt_Col.Column)
If InStr(UCase(store_cell.Value), UCase(Store)) > 0 And credit_cell.Value = amount Then
If store_cell.Interior.ColorIndex <> 46 Then
If Amex And InStr(UCase(type_cell.Value), UCase("amex deposit")) Then
store_cell.Interior.ColorIndex = 46
search_bank = True
End If
If Not Amex And InStr(UCase(type_cell.Value), UCase("Credit Card Deposit")) Then
store_cell.Interior.ColorIndex = 46
search_bank = True
End If
End If
End If
End If
Next i
End Function
et est ici le testeur:
Sub Tester()
Dim x As Boolean
x = search_bank("ctc", 38.4, True)
Debug.Print (x)
End Sub
J'ai essayé d'utiliser 'set' sur le testeur:
Sub Tester()
Dim x As Boolean
Set x = search_bank("ctc", 38.4, True)
Debug.Print (x)
End Sub
Et même en déclarant la variable avant de les passer dans le testeur (je ne suis pas très habitué à VBA mais pour un moment je croyais que c'était juste si ancien, ça devait les choses déduites à être déclarées avant qu'elles soient passées)
Sub Tester()
Dim x As Boolean
Dim store As String
Dim Amount As Double
Dim amex As Boolean
store = "ctc"
Amount = 38.4
amex = True
x = search_bank(store, Amount, amex)
Debug.Print (x)
End Sub
Lorsque vous obtenez l'erreur d'exécution, sélectionnez l'option Déboguer et utilisez la touche F8 pour parcourir le code jusqu'à ce que la ligne indique les erreurs. –
Où/quand/comment déclarez-vous 'bank_sheet'? – BruceWayne
Assurez-vous également que le résultat de vos trois méthodes 'Find' renvoie des objets valides. Si les valeurs ne sont pas trouvées dans la ligne 1, elles renverront un 'Nothing', ce qui augmenterait cette erreur plus tard dans votre code. –