Upprepa kommandon

I VBA kan du säga till makrot att upprepa det du vill göra flera gånger på olika ställen, en så kallad "loop".

Låt säga att du vill hämta värden från cell A1 i alla flikar och lista dem i en ny flik. 

Exempelvis kan du upprepa i: 

  • Celler i ett intervall 

  • Flikar i en Excel

  • Pivot Tabeller i en flik

Lär dig mer om detta nedan:

01/ Repetera kod

Jag ska visa på två olika sätt hur du kan repetera din kod, antingen med:

  1. "For each... next" (2-5 nedan)

  2. "For i = X To Y" (6-9 nedan)

  1. Detta innebär att du repeterar kod i exempelvis alla flikar, alla celler, alla Pivot tabeller o.s.v.

  2. Detta innebär att du säger att i ska vara ett tal och detta tal mellan exempelvis
    1-10. Sedan går du igenom exempelvis flikar och utför din kod, i detta fall de tio första från vänster

02/ For each... next, steg 1

Fyra steg krävs för att göra denna loop

Steg 1: Deklarera en variabel för ditt objekt

Variabel = Läs mer här

Objekt = Enheter som gör en Excel, som flikar, rader, kolumner, excelark & cellintervall

Dim ws As Worksheet

 1       2     3            4

1. Nu ska du deklarera något

2. Detta är din variabel. ws kommer sedan vara det som du säger till den att vara i 4

3. Som...

4. Ditt objekt. Kan vara exempelvis Workbook, Worksheet & Range

03/ For each... next, steg 2

Skriv "For Each" + "Variabelns namn" + "In" + "vart den ska leta (collection)"

Du går då igenom alla objekt i där du säger till den att leta

For Each ws In ActiveWorkbook.Worksheets

I detta fallet går du igenom alla flikar i den öppna Excelen

04/ For each... next, steg 3

Skriv kod som du vill ska genomföras

ws.Visible = True

I detta fallet går du igenom alla flikar i den öppna Excelen. Använd din variabel för att referera till det aktiva objektet

05/ For each... next, steg 4

Skriv Next och variabeln för att repetera koden i alla "vart den ska leta"

Next ws

ws har du tidigare bestämt till = worksheet. Du kommer nu gå vidare till nästa flik i den collection som du bestämt = ActiveWorkbook.Worksheets

06/ For i = X to Y, steg 1

Fyra steg krävs för att göra denna loop

Steg 1: Deklarera en variabel för ditt objekt

Variabel = Läs mer här

Objekt = Enheter som gör en Excel, som flikar, rader, kolumner, excelark & cellintervall

Dim i As Integer

 1     2    3        4

1. Nu ska du deklarera något

2. Detta är din variabel. i kommer sedan vara det som du säger till den att vara i 4

3. Som...

4. Ditt objekt som du bestämmer ska vara ett tal

07/ For i = X to Y, steg 2

Skriv "For"-kommandot, vilket är när den ska starta och sluta

For i = 1 To 2

variabeln i kommer nu anta de två värdena 1 och 2. Går du nu igenom flikar kommer det bli flik 1 och flik 2. Du kan byta ut ex 2:an mot en variabel i sig. Exempelvis:

ActiveWorkbook.Worksheets.Count

i kommer då anta värdena 1 till så många flikar som finns i den öpopna Excelen

08/ For i = X to Y, steg 3

Skriv kod som du vill ska genomföras och använd variabeln som referens till vart den ska utföra koden

Worksheets(i).Visible = True

Som du ser går vi igenom flik i och i kommer anta värdena som du satt i steg 6

09/ For i = X to Y, steg 4

Skriv Next och variabeln för att gå vidare till nästa tal

Next i

i har du tidigare bestämt till tal mellan X och Y. Du kommer nu gå vidare till nästa tal

Excel med Rickard