IT Fjernundervisning

Løkker

Beskrivelse

Løkker

Der flere metoder til at få programmer til at køre i løkker:

For Variabel = a TO b    Kommandoer  Next
For Each Egenskab IN Objektsamling    Kommandoer  Next
Do Until Betingelse   Kommandoer  Loop
Do While Betingelse    Kommandoer  Loop
Do

Kommandoer
Loop Until Betingelse
Do

Kommandoer
Loop While Betingelse

Læg mærke til at man kan bryde sådan en Do - Loop med Exit Do:

Do Until Betingelse

Kommendoer
If Betingelse Then Exit Do
Flere kommandoer
Loop

Et (måske lidt kedeligt) eksempel på anvendelse af en løkke kunne se sådan her ud:

Excel VBA kursus - VBA makro der viser brug af for - fjernundervisning

Prøv det - det skulle gerne give 5 dialogbokse med tallene 1 til 5.
Det var ét meget simpelt eksempel. Her kommer et par stykker mere (desværre stadig ikke specielt fantasifulde (forslag modtages gerne))

Sub NytForEksempel()   Range("A1").Select   For i = 1 To 10     ActiveCell.Value = i     Activecell.Offset(0,1).Select   Next i End Sub

 

Cells objektet

Når man arbejder med løkker i regnearket kan objektet Cells være nyttigt at kende. Det virker sådan her:

Cells(1,1).Value = "Hej" - skriver Hej i celle A1
Cells(2,3).Value = "Hej igen" - skriver Hej igen i celle C2

Det første tal angiver altså række nummeret og det andet angiver kolonne nummeret.

Bruger vi cells objektet sammen med en for - next løkke kan man sætte lille eksempel sammen

Sub EndnuEtForEksempel()   For i = 1 to 5     Cells(i, 1) = "Hej"   Next End Sub

Bemærk at listen over metoder og egenskaber desværre ikke kommer frem når man trykker. efter Cells(1,1) - man kan bruge alle de samme metoder og egenskaber, som på Range objektet.


Øvelse

Lav et regneark, der hedder "Løkker.xlsm" og skriv følgende makroer i arket

  1. Prøv de forskellig eksempler ovenfor. Prøv med F8 (som du så under Fejlfinding) at steppe gennem koden for at se, hvordan løkken virker.
  2. Lav en makro, der gør klar til en tips kupon som vist nedenfor
  3. Sørg for at de to makroer kan aktiveres fra knapper i regnearket
  4. Lav også en makro, der rydder op i regnearket (prøv om du kan gøre det med løkker)

Send regnearket til mig.


Løsning

Du kan hente mit forslag til løsningen her.

Min kode ser sådan her ud:

Sub BrugAfFor()     For i = 1 To 10         Range("A1").Value = Range("A1").Value + i     Next End Sub
Sub TipsKupon()     Range("A1").Value = "Tipskupon"     Range("A1").Font.Bold = True     Range("B2").Value = "1"     Range("C2").Value = "X"     Range("D2").Value = "2"     Range("B2:D2").HorizontalAlignment = xlHAlignCenter     For i = 1 To 13         Cells(2 + i, 1).Value = i     Next End Sub
Sub RydOp1()     For i = 1 To 4         For j = 1 To 16             Cells(j, i).Clear         Next     Next End Sub
Sub RydOp2()     Range("A1:D16").Clear End Sub

Jeg har hygget mig lidt med at lave to forskellige versioner af rydop makroen - det skulle være til at gennemskue. Og på utallige opfordringer kommer også lige en snut kode, der udfylder kuponen

Sub UdfyldKupon()     Dim i As Integer     Dim resultat As Integer     For i = 1 To 13         resultat = Int(3 * Rnd) + 1         If resultat = 1 Then             Cells(i + 1, 2).Value = 1         ElseIf resultat = 2 Then             Cells(i + 1, 3).Value = "X"         Else             Cells(i + 1, 4).Value = 2         End If     Next End Sub

Brug for hjælp til VBA, VSTO eller SQL?

Scient Data tilbyder professionel IT-konsulentbistand

Kontakt Scient Data →