Slik bruker du For-Next-løkkene i Excel 2016 VBA

Den enkleste typen løkke i Excel VBA-programmering er en For-Next-løkke. Sløyfen styres av en tellervariabel, som starter ved en verdi og stopper ved en annen verdi. Utsagnene mellom For-setningen og Neste-setningen er påstandene som gjentas i løkken.

Et For-Next eksempel

Følgende eksempel bruker en For-Next-løkke for å summere de første 1000 positive tallene. Totalvariabelen starter som null. Deretter oppstår looping. Variabelen Cnt er looptelleren. Den starter som 1 og økes med 1 hver gang gjennom loopen. Sløyfen slutter når Cnt er 1000.

Dette eksemplet har bare ett utsagn inne i loopen. Denne setningen legger til verdien av Cnt til Total-variabelen. Når loopen er ferdig, viser en MsgBox summen av tallene.

Sub AddNumbers()
  Dim totalt som dobbel
  Dim Cnt As Long
  Totalt = 0
  For Cnt = 1 til 1000
    Totalt = Totalt + Cnt
  Neste Cnt
  MsgBox totalt
End Sub

Fordi looptelleren er en normal variabel, kan du skrive kode for å endre verdien innenfor kodeblokken mellom For- og Next-setningene. Dette er imidlertid en veldig dårlig praksis.

For-Next eksempler med et trinn

Du kan bruke en trinnverdi for å hoppe over noen tellerverdier i en For-Next-løkke. Her er det forrige eksemplet, omskrevet for å summere bare oddetall mellom 1 og 1000:

Sub AddOddNumbers()
  Dim totalt som dobbel
  Dim Cnt As Long
  Totalt = 0
  For Cnt = 1 til 1000 Trinn 2
    Totalt = Totalt + Cnt
  Neste Cnt
  MsgBox totalt
End Sub

Denne gangen starter Cnt som 1 og får deretter verdier på 3, 5, 7 og så videre. Trinnverdien bestemmer hvordan telleren økes. Legg merke til at den øvre sløyfeverdien (1000) faktisk ikke brukes fordi den høyeste verdien av Cnt vil være 999.

Her er et annet eksempel som bruker en trinnverdi på 3. Denne prosedyren fungerer med det aktive arket og bruker lys grå skyggelegging på hver tredje rad, fra rad 1 til rad 100.

Sub ShadeEveryThird Row()
  Dim i As Long
  For i = 1 til 100 Trinn 3
    Rader(i).Interiør.Farge = RGB(200, 200, 200)
  Neste i
End Sub

Sjekk resultatet av å kjøre denne makroen.

Slik bruker du For-Next-løkkene i Excel 2016 VBA

Bruke en løkke for å bruke bakgrunnsskygge på rader.

Et For-Next-eksempel med en Exit For-setning

En For-Next-løkke kan også inkludere en eller flere Exit For-setninger i loopen. Når VBA møter denne setningen, avsluttes løkken umiddelbart.

Følgende eksempel viser Exit For-setningen. Denne rutinen er en funksjonsprosedyre, beregnet på å brukes i en regnearkformel. Funksjonen godtar ett argument (en variabel kalt Str) og returnerer tegnene til venstre for det første numeriske sifferet. For eksempel, hvis argumentet er "KBR98Z", returnerer funksjonen "KBR."

Funksjon TextPart(Str)
  Dim i As Long
  TextPart = ""
  For i = 1 til Len(Str)
    Hvis IsNumeric(Mid(Str, i, 1)) Da
      Avslutt for
    Ellers
      TextPart = TextPart & Mid(Str, i, 1)
    Slutt om
  Neste i
Avslutt funksjon

For-Next-løkken starter med 1 og slutter med tallet som representerer antall tegn i strengen. Koden bruker VBAs Mid-funksjon for å trekke ut et enkelt tegn i loopen. Hvis et numerisk tegn blir funnet, utføres Exit For-setningen, og løkken avsluttes for tidlig.

Hvis tegnet ikke er numerisk, legges det til den returnerte verdien (som er det samme som funksjonens navn). Den eneste gangen løkken vil undersøke hvert tegn er om strengen passerte da argumentet ikke inneholder numeriske tegn.

Et nestet For-Next-eksempel

Du kan ha et hvilket som helst antall utsagn i løkken og legge For-Next-løkker i andre For-Next-løkker.

Følgende eksempel bruker en nestet For-Next-løkke for å sette inn tilfeldige tall i et celleområde på 12 rader for 5 kolonner. Legg merke til at rutinen utfører den indre løkken (løkken med radtelleren) én gang for hver iterasjon av den ytre sløyfen (løkken med Col-telleren). Med andre ord, rutinen utfører setningen Cells(Row, Col) = Rnd 60 ganger.

Slik bruker du For-Next-løkkene i Excel 2016 VBA

Disse cellene ble fylt ved å bruke en nestet For-Next-løkke.

Sub FillRange()
  Dim Col As Long
  Dim rad så lenge
  For Col = 1 til 5
    For rad = 1 til 12
      Celler(Row, Col) = Rnd
    Neste rad
  Neste Col
End Sub

Det neste eksemplet bruker nestede For-Next-løkker for å initialisere en tredimensjonal matrise med verdien 100. Denne rutinen utfører setningen midt i alle løkkene (tilordningssetningen) 1000 ganger (10 * 10 * 10), hver gang med en annen kombinasjon av verdier for i, j og k:

Sub NestedLoops()
  Dim MyArray(10, 10, 10)
  Dim i As Long
  Dim j As Long
  Dim k As Long
  For i = 1 til 10
    For j = 1 til 10
      For k = 1 til 10
        MyArray(i, j, k) = 100
    Neste k
  Neste j
Neste i
  ' Andre uttalelser går her
End Sub

Her er et siste eksempel som bruker nestede For-Next-løkker, med en Step-verdi. Denne prosedyren lager et sjakkbrett ved å endre bakgrunnsfargen til vekslende celler.

Slik bruker du For-Next-løkkene i Excel 2016 VBA

Bruke løkker for å lage et sjakkbrettmønster.

Radtelleren går fra 1 til 8. En If-Then-konstruksjon bestemmer hvilken nestet For-Next-struktur som skal brukes. For rader med oddetall begynner Col-telleren med 2. For partallsrader begynner Col-telleren med 1. Begge løkkene bruker en trinnverdi på 2, så alternative celler påvirkes. To ekstra utsagn gjør cellene firkantede (akkurat som et ekte sjakkbrett).

Sub MakeCheckerboard()
  Dim R As Long, C As Long
  For R = 1 til 8
    Hvis WorksheetFunction.IsOdd(R) Da
     For C = 2 til 8 Trinn 2
       Celler (R, C). Interiør. Farge = 255
     Neste C
    Ellers
     For C = 1 til 8 Trinn 2
       Celler (R, C). Interiør. Farge = 255
     Neste C
    Slutt om
  Neste R
  Rader(“1:8”). Radhøyde = 35
  Kolonner(“A:H”). Kolonnebredde = 6,5
End Sub

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]