Formler
Beskrivelse
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
wks.Range["C1"].Formula = "=A1*B1"; Vil altså sætte formlen =A1*B1 ind i celle C1.
wks.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
wks.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 = wks.Range["A1"].End[Excel.XlDirection.xlDown].Row wks.Range["C1"].End[Excel.XlDirection.xlDown].Offset[1, 0].Formula =
"=Sum(C2:C" & AntalRækker & ")"
Øvelse
Skriv kode, der løser opgaverne og send mig din installation.
Der gemmer sig et par hyggelige udfordringer i øvelsen her...
Når man skal beregne totalprisen kan det være nyttigt at huske på, at formler i Excel er relative - med mindre man bruger $ tegn - hvilket betyder, at når vi i A2 skriver =B2*C2 mener vi i virkeligheden at vi gerne vil have ganget indholdet i cellen til højre med indholdet af cellen 2 gange til højre.
HUSK, at din kode skal virke selv om der er 83, 103, 1200 eller ... rækker med data.
God kamp 
Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →