Somfunctie in VBA

Ik heb een probleem met het optellen van cellen in vba. Ik moet Cells(a,b) gebruiken:

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

maar het werkt niet.


Antwoord 1, autoriteit 100%

Functie is geen eigenschap/methode uit het bereik.

Als je waarden wilt optellen, gebruik dan het volgende:

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

BEWERKEN:

als je de formule wilt, gebruik dan als volgt:

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).

Als je altijd hetzelfde bereikadres gaat gebruiken, kun je het volgende gebruiken zoals Rory voorstelde:

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

Antwoord 2, autoriteit 25%

Plaats de functie waardein de cel

Application.Sum werkt in mijn ervaring vaak niet goed (of de VBA-ontwikkelaarsomgeving houdt er om wat voor reden dan ook niet van).

De functie die voor mij het beste werkt, is Excel.WorksheetFunction.Sum()

Voorbeeld:

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.

Plaats de functie rechtstreeks in de cel

De andere methode waar je naar op zoek was, is volgens mij om de functie rechtstreeks in de cel te plaatsen. Dit kan worden gedaan door de functiereeks in de celwaarde in te voeren. Hier is een voorbeeld dat hetzelfde resultaat geeft als hierboven, behalve dat de celwaarde de functie krijgt en niet het resultaat van de functie:

   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.

Antwoord 3, autoriteit 8%

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

werkt niet omdat werkbladfuncties (wanneer ze daadwerkelijk op een werkblad worden gebruikt) Rangeof Cell

niet begrijpen

Probeer

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

Antwoord 4, autoriteit 2%

Range("A10") = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1", "A9"))

Waar

Range("A10")is de antwoordcel

Range("A1", "A9")is het bereik dat moet worden berekend

Other episodes