Formler
Det er ikke specielt kompliceret at indsætte formler i et regneark fra VBA - det gøres igen via Range objektet. Range objektet har en stribe egenskaber der kan bruges til formålet:
Egenskab |
Anvendelse |
Formula |
Range("A1").Formula = "=B2*B3" vil indsætte formlen "B2*B3" i celle A1 |
FormulaArray |
Range("E1:E3").FormulaArray = "=Sum(R1C1:R3C3)" vil indsætte en matrixformel i E1:E3. Bemærk at man skal bruge RC notation |
FormulaHidden |
Range("A1:B1").FormulaHidden = True vil skjule formlerne i A1:B1 hvis arkfanen beskyttes |
FormulaLabel |
ActiveWorkbook.AcceptLabelsInFormulas = True Worksheets(1).Range("a1:e3").FormulaLabel = xlColumnLabels - vil gøre det muligt at bruge kolonne labels i formler |
FormulaLocal |
Giver mulighed for at angive formler i den danske udgave - dvs. du kan skrive Range("A1").FormulaLocal = "=Middel(B2:B3)" (hvis du arbejder i en dansk Excel) |
FormulaR1C1 |
Virker som Formula, men forudsætter du bruger RC notation |
FormulaR1C1Local |
Virker som FormulaLocal, men forudsætter du bruger RC notation |
Bruger man ikke FormulaLocal skal man huske at alt foregår på engelsk - det gælder både funktionnavne, tal og dato formatering.
Et par eksempler
Range("C1").Formula = "=A1*B1"
Vil altså sætte formlen =A1*B1 ind i celle C1.
Range("D1").Formula = "=C1*1.25"
Lægger moms til tallet i C1 og skriver det med formlen =C1*1,25 i celle D1. Læg mærke til at formlen skrives med . i stedet for , . Når vi arbejder med Formula skal alle formler skrives på "amerikansk".
Man kan også skrive
Range("C1:C10").Formula = "=A1*B1"
Det er en sød lille detalje, der udnytter, at Excel arbejder med relative referencer. Linjen vil indsætte formlen =A1*B1 i celle C1, =A2*B2 i celle C2 osv. (Prøv selv om det passer)
Læg også mærke til at vi kan opbygge formlen dynamisk, hvis vi har behov for det.
AntalRækker = Range("A1").End(xlDown).Row
Range("C1").End(xlDown).Offset(1, 0).Formula = "=Sum(C2:C" & AntalRækker & ")"