|
Løkker
|
|
Ofte ønsker du at en makro gjør det samme flere ganger. For eksempel,
først fargelegge celle A1, så A2, så A3.
|
|
Du kunne skrevet samme koden tre ganger, men det er tungvint. Og hva om du
ikke vet hvor mange repetisjoner du kommer til å trenge? -- Du
trenger du en programmløkke.
|
Excel kjenner til mange forskjellige typer av løkker. En veldig grei og
enkel løkke er denne:
For i = 1 To 100
....
Next i
I eksemplet blir koden mellom startpunktet, "For..." og
sluttpunktet, "Next...", gjentatt for hver mulig verdi av i: i=1, i=2,
... helt fram til i=100.
|
En løkke kan også utse som denne her:
For Each Cell in Range("B1:C5")
....
Next Cell
I eksemplet blir koden mellom startpunktet, "For..." og
sluttpunktet, "Next...", gjentatt for hver celle mellom B1 og C5.
|
|
Eksempel eksempel eksempel! Vi skal bygge en makro som automatisk
fyller noen 100 celler med en tekst. For eksempel, ditt navn. Eller
klokkeslett og dato. Eller noe annet.
|
Start ved et nytt regneark, få fram Visual Basic verktøylinje...
...gå over i opptaksmodus...
...og registrer en liten makro:
|
Gjør dette mens opptaket pågår:
- Klikk å celle A1
- Skriv teksten du vil legge inn
- Gi cellen ditt favoritt-format
|
Så avslutter du registreringen.
|
Nå er det på tide å inspisere koden:
lat som om du vil kjøre...
...men sats på Rediger isteden:
|
Når du ser på koden din, ser du kanskje noe som dette:
|
Du ser at Excel har registrert at celle A1 ble
utvalgt:
Range("A1").Select
Så er teksten registrert:
ActiveCell.FormulaR1C1 = "HSH er OK"
Så er cellen utvalgt en gang til (det var vel ikke helt nødvendig):
Range("A1").Select
Og så kommer det en blokk av type
With Selection.XXX
...
End With
der fargen blir forandret.
|
|
Nå skal vi omarbeide makroen slik at den gjør det samme med
flere celler nedover i A-kolonnen. Vi må pakke det hele inn i
en For... Next løkke...!
|
Rediger din makro ved å tillegge noe som dette:
|
|
Hva skjer? En variabel i er definiert. Den inneholder en ny verdi
hver gang Excel gjentar løkken: først 1, så 2, så 3... fram til
100.
En celle blir utvalgt hver gang: det er celle med kolonneindeks i, og det er
en i 1. kolonne (dvs. i kolonne A).
Med den utvalgte cellen skjer akkurat det samme som med celle A1 i den
opprinnelige koden. (Med en liten forskjell: her er cellen bare en gang
utvalgt, for det holder. Linjen med gjentagelsen av utvalg er slettet.)
|
Når du prøvekjører din makro.. funker det da?
|