Summera variabla cellområden i VBA
Att summera ett cellområde i Excel är enkelt. Att summera ett liknande område uttryck som en variabel i VBA är lite svårare – men det är turligt nog fortfarande enkelt. Om du stött på detta problemet (och kanske kommit till denna sidan) så vet i alla fall du vad svårigheten består i…
När man programmerar i VBA så vet man inte alltid på förhand vilka celler som skall summeras vid ett visst tillfälle. I dessa fall så måste man ta till en variabel för att uttrycka cellområdet.
I Excels kalkylblad är det enkelt att summera ett cellområde. Men VBA har ingen motsvarande funktion. Lösningen blir då att tvinga VBA att använda Excels kalkylbladsfunktioner.
Att använda Excelfunktioner i VBA
Låt oss säga att vi har ett område varOmrade som vi vill summera. För att utföra denna summering så tar vi till Excels funktion SUM.
Application.WorksheetFunction.Sum(varOmrade) |
Genom ovanstående formulering kan vi från VBA påkalla vilken av Excels kalkylbladsfunktioner som helst, så länge som vi inleder med de magiska orden
Application.WorksheetFunction... |
Ett exempel på summering i VBA av variabelt cellområde
I det här exemplet så är vi intresserade av att summera värdena som motsvaras av “A”, dvs cellområdet C3:C8.
Lösning No. 1: Skriva ut summan direkt i en cell
'cellområde som skall summeras varSumma = Range(Cells(3,3), Cells(8, 3)) 'summerar cellområdet och skriver ut summan i cell A1 Cells(1, 1) = Application.WorksheetFunction.Sum(varSumma) |
Lösning No. 2: Skriva summan till en VBA-variabel
Denna lösning medger på ett vis en större flexibilitet då summan (lagrad i variabeln strSumma) på ett enkelt sätt kan användas direkt för vidare beräkningar.
'cellområde som skall summeras varSumma = Range(Cells(3,3), Cells(8, 3)) 'summerar cellområdet och sätter in summan i en variabel strSumma = Application.WorksheetFunction.Sum(varSumma) |