2017-08-03 2 views
2

Je tente d'écrire une macro VBA simple qui prendra la colonne de la cellule active et l'entrée de l'utilisateur pour ajouter une plage de cellules sur une seule ligne ensemble. La plage est calculée en ajoutant l'entier que l'utilisateur entre dans la colonne active et c'est la colonne de fin. Le problème est qu'il me donne l'erreur d'exécution '424' et me dit "Objet requis". Quand je cours, et se met en colère contre la ligne de somme.VBA Sum une plage de cellules

Voici mon code. Je commence juste à VBA, donc ça ne peut pas être si dur ... pas vrai?

Sub Food() 
Dim first As Variant 
Dim last As Integer 
Dim days As Integer 
Dim month As Variant 
Dim total As Double 
first = ActiveCell.Column 
days = InputBox("Days in the month?") 
last = first + days 
month = Range(Cells(first, 4), Cells(last, 4)) 
total = Excel.WorksheetFunction.Sum(Report.Range(month)) 
Worksheets(1).Cells(1, 13).Value = total 
End Sub 
+0

est 'une feuille de calcul lorsque VERBAL D'vous mettez' somme (Report.Range (mois)) ' – Jarom

+0

pourquoi ne pas entrer dans la formule' 'A13, au lieu d'entrer le résultat? –

+0

'total = Excel.WorksheetFunction.Sum (month)', month est un tableau de valeurs qui n'est pas une plage dans cette instance. –

Répondre

0

L'erreur est la façon dont vous essayez d'additionner la plage. Essayez comme ceci:

total = WorksheetFunction.Sum(month) 

Chaque fois que vous voyez un problème dans VBA, essayez d'isoler une résolution séparément. Par exemple, dans votre cas quelque chose comme cela aurait aidé, à titre d'exemple d'isolement:

Option Explicit 

Sub TestMe() 

    Dim rngRange As Range 
    Set rngRange = Range("A1:A5") 

    'Any of these is ok: 
    Debug.Print WorksheetFunction.Sum(rngRange) 
    Debug.Print WorksheetFunction.Sum(Range("A1:A5")) 
    Debug.Print WorksheetFunction.Sum(1, 2, 3) 
    Debug.Print WorksheetFunction.Sum(Array(1, 2, 3)) 
    Debug.Print WorksheetFunction.Sum(Array(1, 1, 545), Array(-2)) 

End Sub