Hvordan bruke If-Then i Excel 2016 VBA

If-Then er VBAs viktigste kontrollstruktur. Du vil sannsynligvis bruke denne kommandoen daglig. Bruk If-Then-strukturen når du vil utføre en eller flere setninger betinget. Den valgfrie Else-klausulen, hvis den er inkludert, lar deg utføre en eller flere setninger hvis betingelsen du tester ikke er sann. Her er en enkel CheckUser-prosedyre, omkodet for å bruke If-Then-Else-strukturen:

Sub CheckUser2()
  UserName = InputBox("Skriv inn navnet ditt: ")
  Hvis brukernavn = "Satya Nadella" Da
    MsgBox ("Velkommen Satya ...")
' …[Mer kode her] …
  Ellers
    MsgBox "Beklager. Bare Satya Nadella kan kjøre dette.»
  Slutt om
End Sub

Hvis-så eksempler

Følgende rutine demonstrerer If-Then-strukturen uten den valgfrie Else-klausulen:

Sub GreetMe()
  Hvis tid < 0,5 så MsgBox "God morgen"
End Sub

GreetMe-prosedyren bruker VBAs tidsfunksjon for å få systemtiden. Hvis gjeldende tid er mindre enn 0,5, viser rutinen en vennlig hilsen. Hvis tiden er større enn eller lik 0,5, avsluttes rutinen, og ingenting skjer.

For å vise en annen hilsen hvis Time er større enn eller lik 0,5, kan du legge til en annen If-Then-setning etter den første:

Sub GreetMe2()
  Hvis tid < 0,5 så MsgBox "God morgen"
  Hvis tid >= 0,5 så MsgBox "God ettermiddag"
End Sub

Legg merke til at >= (større enn eller lik) brukes for den andre If-Then-setningen. Dette sikrer at hele dagen dekkes. Hadde > (større enn) blitt brukt, ville ingen melding vises hvis denne prosedyren ble utført nøyaktig kl. 12.00. Det er ganske usannsynlig, men med et viktig program som dette vil du ikke ta noen sjanser.

Et If-Then-Else-eksempel

En annen tilnærming til det foregående problemet bruker Else-klausulen. Her er den samme rutinen omkodet for å bruke If-Then-Else-strukturen:

Sub GreetMe3()
  Hvis tid < 0,5 så MsgBox "God morgen" Else _
    MsgBox "God ettermiddag"
End Sub

Legg merke til at linjefortsettelsestegn (understrek) brukes i det foregående eksempelet. If-Then-Else-setningen er faktisk en enkelt setning. VBA gir en litt annen måte å kode If-Then-Else-konstruksjoner som bruker en End If-setning. Derfor kan GreetMe-prosedyren skrives om som

Sub GreetMe4()
  Hvis tid < 0,5 da
    MsgBox "God morgen"
  Ellers
    MsgBox "God ettermiddag"
  Slutt om
End Sub

Faktisk kan du sette inn et hvilket som helst antall utsagn under If-delen og et hvilket som helst antall utsagn under Else-delen. Denne syntaksen er lettere å lese og gjør utsagnene kortere.

Hva om du trenger å utvide GreetMe-rutinen til å håndtere tre forhold: morgen, ettermiddag og kveld? Du har to alternativer: Bruk tre If-Then-setninger eller bruk en nestet If-Then-Else-struktur. Nesting betyr å plassere en If-Then-Else-struktur i en annen If-Then-Else-struktur. Den første tilnærmingen, ved å bruke tre If-Then-setninger, er enklere:

Sub GreetMe5()
 Dim melding som streng
 Hvis tid < 0,5 så Msg = "Morgen"
 Hvis tid >= 0,5 og tid < 0,75, så er Msg = "Ettermiddag"
 Hvis Tid >= 0,75, så Msg = "Kveld"
 MsgBox “Bra” & Msg
End Sub

En ny vri ble lagt til ved bruk av en variabel. Msg-variabelen får en annen tekstverdi, avhengig av tidspunktet på dagen. MsgBox-erklæringen viser hilsenen: God morgen, god ettermiddag eller god kveld.

Følgende rutine utfører samme handling, men bruker en If-Then-End If-struktur:

Sub GreetMe6()
  Dim melding som streng
  Hvis tid < 0,5 da
    Msg = "Morgen"
  Slutt om
  Hvis tid >= 0,5 og tid < 0,75 da
    Msg = "Ettermiddag"
  Slutt om
  Hvis Tid >= 0,75 Da
    Msg = "Kveld"
  Slutt om
  MsgBox “Bra” & Msg
End Sub

Bruker ElseIf

I de foregående eksemplene blir hver setning i rutinen utført. En litt mer effektiv struktur vil gå ut av rutinen så snart en tilstand er funnet å være sann. Om morgenen, for eksempel, bør prosedyren vise meldingen God morgen og deretter avslutte — uten å evaluere de andre overflødige forholdene.

Med en liten rutine som dette trenger du ikke å bekymre deg for utførelseshastigheten. Men for større applikasjoner der hastigheten er kritisk, bør du vite om en annen syntaks for If-Then-strukturen.

Slik kan du omskrive GreetMe-rutinen ved å bruke denne syntaksen:

Sub GreetMe7()
 Dim melding som streng
 Hvis tid < 0,5 da
   Msg = "Morgen"
 ElseHvis Tid >= 0,5 Og Tid < 0,75 Da
   Msg = "Ettermiddag"
 Ellers
   Msg = "Kveld"
 Slutt om
 MsgBox “Bra” & Msg
End Sub

Når en betingelse er sann, utfører VBA de betingede setningene, og If-strukturen avsluttes. Denne prosedyren er med andre ord litt mer effektiv enn de foregående eksemplene. Avveiningen er at koden er vanskeligere å forstå.

Et annet Hvis-Så-eksempel

Her er et annet eksempel som bruker den enkle formen til If-Then-strukturen. Denne prosedyren ber brukeren om et antall og viser deretter den aktuelle rabatten, basert på antallet brukeren angir:

Sub ShowDiscount()
  Dim mengde så lenge
  Dim rabatt som dobbel
  Mengde = InputBox(“Skriv inn mengde:”)
  Hvis mengde > 0, så er rabatt = 0,1
  Hvis Mengde >= 25 Da Rabatt = 0,15
  Hvis mengde >= 50, så er rabatt = 0,2
  Hvis Mengde >= 75 Da Rabatt = 0,25
  MsgBox "Rabatt: " & rabatt
End Sub

Legg merke til at hver If-Then-setning i denne rutinen utføres, og verdien for Rabatt kan endres etter hvert som setningene utføres. Rutinen viser imidlertid til slutt riktig verdi for rabatt fordi If-Then-setningene er i rekkefølge etter stigende rabattverdier.

Følgende prosedyre utfører de samme oppgavene ved å bruke den alternative ElseIf-syntaksen. I dette tilfellet avsluttes rutinen umiddelbart etter at setningene er utført for en sann tilstand:

Sub ShowRabatt2()
 Dim mengde så lenge
 Dim rabatt som dobbel
 Mengde = InputBox(“Skriv inn mengde: “)
 Hvis mengde > 0 og mengde < 25, da
  Rabatt = 0,1
 ElseIf Mengde >= 25 Og Mengde < 50 Da
  Rabatt = 0,15
 ElseIf Mengde >= 50 Og Mengde < 75 Da
  Rabatt = 0,2
 ElseIf Mengde >= 75 Da
  Rabatt = 0,25
 Slutt om
 MsgBox "Rabatt: " & rabatt
End Sub

Disse multiple If-Then-strukturene er ganske tungvinte. Det kan være lurt å bruke If-Then-strukturen bare for enkle binære beslutninger.


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 […]