loop
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...
macro

...gå over i opptaksmodus...
macro

...og registrer en liten makro:
macro

Gjør dette mens opptaket pågår:
  1. Klikk å celle A1
  2. Skriv teksten du vil legge inn
  3. Gi cellen ditt favoritt-format
    macro
Så avslutter du registreringen.
macro
Nå er det på tide å inspisere koden: lat som om du vil kjøre...
macro

...men sats på Rediger isteden:
macro

Når du ser på koden din, ser du kanskje noe som dette:
macro
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:
macro
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?
macro

Tilbake til index