Excel VBA Macro Debugging – Application / Object-defined error (erreur 1004)

Je travaille sur le debugging d'une macro pour un de mes collègues et je n'étais pas l'écrivain original du code. Cela étant dit, le problème a été créé lorsque Excel a été mis à jour, ce qui a provoqué la défaillance de la macro – Erreur définie par l'application ou par object (ERROR '1004')

Voici un aperçu de la partie spécifique du code:

Next n_counter

'calculate aggregated results For counter_res = 1 To 7 'insert variance of null dissortingbution Worksheets("results").Cells(22 + counter_res, 2).Value = _ Worksheets("L_S_2008").Cells(2 + counter_res, no_anchors).Value 'mean values of agreement index Worksheets("results").Cells(22 + counter_res, 3).Value = _ WorksheetFunction.Average(Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res))) 'SD of agreement index Worksheets("results").Cells(22 + counter_res, 4).Value = _ (WorksheetFunction.Var(Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res)))) ^ 0.5 'P25 of agreement index Worksheets("results").Cells(22 + counter_res, 6).Value = _ WorksheetFunction.Percentile(Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res)), 0.25) 'Median (P50) of agreement index Worksheets("results").Cells(22 + counter_res, 7).Value = _ WorksheetFunction.Percentile(Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res)), 0.5) 'P25 of agreement index Worksheets("results").Cells(22 + counter_res, 8).Value = _ WorksheetFunction.Percentile(Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res)), 0.75) 

Le debugging a renvoyé la toute première ligne de code

 [Worksheets("results").Cells(22 + counter_res, 2).Value = Worksheets("L_S_2008").Cells(2 + counter_res, no_anchors).Value] 

comme source de l'erreur.

Si quelqu'un a des commentaires ou des conseils, je serais très honoré. Merci d'avance de regarder le problème, il est très apprécié.

Soit les feuilles sont nommées incorrectement, soit la variable no_anchors n'a pas de valeur valide pour une colonne. Lorsque vous déboguez, quelle est la valeur de no_anchors …? Si 0, c'est le problème. Impossible d'avoir une cellule avec une valeur de colonne <1.

Vous pouvez resserrer beaucoup ce code en supprimant toute la répétition, ce qui pourrait aider au debugging.

Les causes possibles de votre problème actuel seraient une mauvaise valeur chez les non- no_anchors comme l'a noté Smackenzie, ou peut-être que la feuille de saisie utilisée pour vos calculs n'est pas celle que vous attendez (car elle n'est pas explicitement spécifiée)

 Dim rngCalc As Range, wsf As WorksheetFunction Set wsf = Application.WorksheetFunction 'calculate aggregated results For counter_res = 1 To 7 'What sheet is this intended to reference? 'By default it will be the ActiveSheet unless specified Set rngCalc = Range(Cells(3, 18 + counter_res), _ Cells(5000, 18 + counter_res)) With Worksheets("results").Rows(22 + counter_res) .Cells(2).Value = Worksheets("L_S_2008").Cells(2 + counter_res, _ no_anchors).Value 'variance .Cells(3).Value = wsf.Average(rngCalc) 'Mean .Cells(4).Value = wsf.Var(rngCalc) ^ 0.5 'SD .Cells(6).Value = wsf.Percentile(rngCalc, 0.25) 'P25 .Cells(7).Value = wsf.Percentile(rngCalc, 0.5) 'Median(P50) .Cells(8).Value = wsf.Percentile(rngCalc, 0.75) 'P75 End With Next counter_res