web-dev-qa-db-fra.com

Fonction de somme en VBA

J'ai un problème avec la sommation des cellules dans vba. J'ai besoin d'utiliser les cellules (a, b):

Range("A1").function="=SUM(Range(Cells(2,1),Cells(3,2)))"

mais ça ne marche pas.

9
haver24

La fonction n'est pas une propriété/méthode de la plage.

Si vous voulez additionner des valeurs, utilisez ce qui suit:

Range("A1").Value = Application.Sum(Range(Cells(2, 1), Cells(3, 2)))

EDIT:

si vous voulez la formule, utilisez comme suit:

Range("A1").Formula = "=SUM(" & Range(Cells(2, 1), Cells(3, 2)).Address(False, False) & ")"

'The two false after Adress is to define the address as relative (A2:B3).
'If you omit the parenthesis clause or write True instead, you can set the address
'as absolute ($A$2:$B$3).

Dans le cas où vous utiliseriez toujours la même adresse, vous pouvez utiliser ce que Rory a proposé:

Range("A1").Formula ="=Sum(A2:B3)"
32
CaBieberach

placez la fonction valeur dans la cellule

Application.Sum ne fonctionne souvent pas bien dans mon expérience (ou du moins l'environnement de développement VBA ne l'aime pas pour une raison quelconque).

La fonction qui me convient le mieux est Excel.WorksheetFunction.Sum()

Exemple:

Dim Report As Worksheet 'Set up your new worksheet variable.
Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.

Report.Cells(11, 1).Value = Excel.WorksheetFunction.Sum(Report.Range("A1:A10")) 'Add the function result.

Placez la fonction directement dans la cellule

L’autre méthode que vous cherchiez, selon moi, consiste à placer la fonction directement dans la cellule. Cela peut être fait en entrant la chaîne de fonction dans la valeur de la cellule. Voici un exemple qui fournit le même résultat que ci-dessus, excepté que la fonction de cellule reçoit la fonction et non le résultat de la fonction:

    Dim Report As Worksheet 'Set up your new worksheet variable.
    Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.

    Report.Cells(11, 1).Value = "=Sum(A1:A10)" 'Add the function.
8
Lopsided
Range("A1").Function="=SUM(Range(Cells(2,1),Cells(3,2)))"

ne fonctionnera pas car les fonctions de la feuille de calcul (lorsqu'elles sont réellement utilisées dans une feuille de calcul) ne comprennent pas Range ou Cell

Essayer

Range("A1").Formula="=SUM(" & Range(Cells(2,1),Cells(3,2)).Address(False,False) & ")"
3
Tim Williams
Range("A10") = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1", "A9"))

Range("A10") est la cellule de réponse

Range("A1", "A9") est la plage à calculer

1
Mohamed Khairt