Sådan bruges If-Then i Excel 2016 VBA

If-Then er VBAs vigtigste kontrolstruktur. Du vil sandsynligvis bruge denne kommando på daglig basis. Brug If-Then-strukturen, når du vil udføre en eller flere sætninger betinget. Den valgfri Else-sætning, hvis den er inkluderet, lader dig udføre en eller flere sætninger, hvis den betingelse, du tester, ikke er sand. Her er en simpel CheckUser-procedure, omkodet til at bruge If-Then-Else-strukturen:

Sub CheckUser2()
  Brugernavn = InputBox(“Indtast dit navn: “)
  Hvis Brugernavn = "Satya Nadella" Så
    MsgBox ("Velkommen Satya...")
' …[Mere kode her] …
  Andet
    MsgBox "Beklager. Kun Satya Nadella kan køre dette."
  Afslut Hvis
Slut Sub

Hvis-så eksempler

Følgende rutine viser If-Then-strukturen uden den valgfri Else-sætning:

Sub GreetMe()
  Hvis Tid < 0,5, så MsgBox "Godmorgen"
Slut Sub

GreetMe-proceduren bruger VBAs tidsfunktion til at få systemtiden. Hvis den aktuelle tid er mindre end 0,5, viser rutinen en venlig hilsen. Hvis tiden er større end eller lig med 0,5, slutter rutinen, og der sker ikke noget.

For at vise en anden hilsen, hvis Time er større end eller lig med 0,5, kan du tilføje en anden If-Then-sætning efter den første:

Sub GreetMe2()
  Hvis Tid < 0,5, så MsgBox "Godmorgen"
  Hvis Tid >= 0,5, så MsgBox "God eftermiddag"
Slut Sub

Bemærk, at >= (større end eller lig med) bruges til den anden If-Then-sætning. Dette sikrer, at hele dagen er dækket. Var > (større end) blevet brugt, ville der ikke komme nogen meddelelse, hvis denne procedure blev udført præcis kl. 12.00. Det er ret usandsynligt, men med et vigtigt program som dette ønsker du ikke at tage nogen chancer.

Et Hvis-Så-Andet eksempel

En anden tilgang til det foregående problem bruger Else-sætningen. Her er den samme rutine omkodet for at bruge If-Then-Else-strukturen:

Sub GreetMe3()
  Hvis Tid < 0,5 Så MsgBox “Godmorgen” Else _
    MsgBox "God eftermiddag"
Slut Sub

Bemærk, at linjefortsættelsestegn (understregning) er brugt i det foregående eksempel. If-Then-Else-sætningen er faktisk en enkelt erklæring. VBA giver en lidt anderledes måde at kode If-Then-Else-konstruktioner, der bruger en End If-sætning. Derfor kan GreetMe-proceduren omskrives som

Sub GreetMe4()
  Hvis Tid < 0,5 Så
    MsgBox "Godmorgen"
  Andet
    MsgBox "God eftermiddag"
  Afslut Hvis
Slut Sub

Faktisk kan du indsætte et hvilket som helst antal udsagn under If-delen og et hvilket som helst antal udsagn under Else-delen. Denne syntaks er lettere at læse og gør udsagn kortere.

Hvad hvis du har brug for at udvide GreetMe-rutinen til at håndtere tre forhold: morgen, eftermiddag og aften? Du har to muligheder: Brug tre If-Then-sætninger eller brug en indlejret If-Then-Else-struktur. Nesting betyder at placere en If-Then-Else-struktur i en anden If-Then-Else-struktur. Den første tilgang, der bruger tre If-Then-sætninger, er enklere:

Sub GreetMe5()
 Dæmp besked som streng
 Hvis tid < 0,5 så besked = "morgen"
 Hvis tid >= 0,5 og tid < 0,75, så er Msg = "Eftermiddag"
 Hvis Tid >= 0,75, så Msg = "Aften"
 MsgBox "God" & Msg
Slut Sub

Et nyt twist blev tilføjet ved brug af en variabel. Msg-variablen får en anden tekstværdi, afhængigt af tidspunktet på dagen. MsgBox-erklæringen viser hilsenen: Godmorgen, god eftermiddag eller godaften.

Følgende rutine udfører den samme handling, men bruger en If-Then-End If-struktur:

Sub GreetMe6()
  Dæmp besked som streng
  Hvis Tid < 0,5 Så
    Msg = "morgen"
  Afslut Hvis
  Hvis tid >= 0,5 og tid < 0,75 så
    Msg = "Eftermiddag"
  Afslut Hvis
  Hvis Tid >= 0,75 Så
    Msg = "Aften"
  Afslut Hvis
  MsgBox "God" & Msg
Slut Sub

Brug af ElseIf

I de foregående eksempler udføres hver sætning i rutinen. En lidt mere effektiv struktur ville forlade rutinen, så snart en betingelse viser sig at være sand. Om morgenen skal proceduren f.eks. vise meddelelsen Godmorgen og derefter afslutte — uden at evaluere de andre overflødige forhold.

Med en lille rutine som denne behøver du ikke bekymre dig om udførelseshastigheden. Men for større applikationer, hvor hastigheden er kritisk, bør du kende til en anden syntaks for If-Then-strukturen.

Sådan kan du omskrive GreetMe-rutinen ved at bruge denne syntaks:

Sub GreetMe7()
 Dæmp besked som streng
 Hvis Tid < 0,5 Så
   Msg = "morgen"
 ElseIf Time >= 0,5 og Time < 0,75 Then
   Msg = "Eftermiddag"
 Andet
   Msg = "Aften"
 Afslut Hvis
 MsgBox "God" & Msg
Slut Sub

Når en betingelse er sand, udfører VBA de betingede sætninger, og If-strukturen slutter. Med andre ord er denne procedure en smule mere effektiv end de foregående eksempler. Afvejningen er, at koden er sværere at forstå.

Endnu et Hvis-Så-eksempel

Her er et andet eksempel, der bruger den simple form af If-Then-strukturen. Denne procedure beder brugeren om en mængde og viser derefter den relevante rabat, baseret på den mængde, brugeren indtaster:

Sub ShowRabat()
  Dim mængde så længe
  Dim Rabat Som Dobbelt
  Antal = InputBox(“Indtast antal:”)
  Hvis mængde > 0, så er rabat = 0,1
  Hvis mængde >= 25, så rabat = 0,15
  Hvis mængde >= 50, så rabat = 0,2
  Hvis mængde >= 75, så rabat = 0,25
  MsgBox “Rabat: “ & Rabat
Slut Sub

Bemærk, at hver If-Then-sætning i denne rutine udføres, og værdien for Discount kan ændre sig, efterhånden som sætningerne udføres. Rutinen viser dog i sidste ende den korrekte værdi for rabat, fordi If-Then-sætningerne er i rækkefølge efter stigende rabatværdier.

Følgende procedure udfører de samme opgaver ved at bruge den alternative ElseIf-syntaks. I dette tilfælde slutter rutinen umiddelbart efter udførelse af sætningerne for en sand tilstand:

Sub ShowRabat2()
 Dim mængde så længe
 Dim Rabat Som Dobbelt
 Antal = InputBox("Indtast antal: ")
 Hvis Mængde > 0 Og Mængde < 25 Så
  Rabat = 0,1
 ElseIf Mængde >= 25 Og Mængde < 50 Så
  Rabat = 0,15
 ElseIf Mængde >= 50 Og Mængde < 75 Så
  Rabat = 0,2
 ElseIf Mængde >= 75 Så
  Rabat = 0,25
 Afslut Hvis
 MsgBox “Rabat: “ & Rabat
Slut Sub

Disse multiple Hvis-Så-strukturer er ret besværlige. Du vil måske kun bruge If-Then-strukturen til simple binære beslutninger.


Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows Microsoft Word åbner filer i skrivebeskyttet tilstand, hvilket gør det umuligt at redigere det? Bare rolig, metoderne er nedenfor

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes fejl ved udskrivning af forkerte Microsoft Word-dokumenter Fejl ved udskrivning af Word-dokumenter med ændrede skrifttyper, rodede afsnit, manglende tekst eller tabt indhold er ret almindelige. Men lad være

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Hvis du har brugt pennen eller highlighteren til at tegne på dine PowerPoint-dias under en præsentation, kan du gemme tegningerne til næste præsentation eller slette dem, så næste gang du viser den, starter du med rene PowerPoint-dias. Følg disse instruktioner for at slette pen- og highlighter-tegninger: Sletning af linjer en ved […]

Indhold af stilbibliotek i SharePoint 2010

Indhold af stilbibliotek i SharePoint 2010

Style-biblioteket indeholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og billeder, der bruges af foruddefinerede mastersider, sidelayouts og kontrolelementer i SharePoint 2010. For at finde CSS-filer i Style-biblioteket på et udgivelsessted: Vælg Site Actions→ View Alt webstedsindhold. Indholdet af webstedet vises. Style-biblioteket ligger i […]

Formater tal i tusinder og millioner i Excel-rapporter

Formater tal i tusinder og millioner i Excel-rapporter

Overvæld ikke dit publikum med gigantiske tal. I Microsoft Excel kan du forbedre læsbarheden af ​​dine dashboards og rapporter ved at formatere dine tal, så de vises i tusinder eller millioner.

Sådan deler og følger du SharePoint-websteder

Sådan deler og følger du SharePoint-websteder

Lær, hvordan du bruger SharePoints sociale netværksværktøjer, der lader enkeltpersoner og grupper kommunikere, samarbejde, dele og forbinde.

Sådan konverteres datoer til julianske formater i Excel

Sådan konverteres datoer til julianske formater i Excel

Julianske datoer bruges ofte i produktionsmiljøer som et tidsstempel og hurtig reference for et batchnummer. Denne type datokodning giver detailhandlere, forbrugere og serviceagenter mulighed for at identificere, hvornår et produkt blev fremstillet, og dermed produktets alder. Julianske datoer bruges også i programmering, militæret og astronomi. Forskellige […]

Sådan opretter du en Access Web App

Sådan opretter du en Access Web App

Du kan oprette en webapp i Access 2016. Så hvad er en webapp overhovedet? Nå, web betyder, at det er online, og app er kun en forkortelse for "applikation". En Custom Web App er en online databaseapplikation, der tilgås fra skyen ved hjælp af en browser. Du bygger og vedligeholder webappen i desktopversionen […]

Hurtig startlinje i SharePoint 2010

Hurtig startlinje i SharePoint 2010

De fleste sider i SharePoint 2010 viser en liste over navigationslinks på linjen Hurtig start langs venstre side af siden. Hurtig startlinjen viser links til fremhævet webstedsindhold såsom lister, biblioteker, websteder og udgivelsessider. Hurtigstartlinjen indeholder to meget vigtige links: Linket Alt webstedsindhold: […]

Hvad betyder Solver-fejlmeddelelserne i Excel?

Hvad betyder Solver-fejlmeddelelserne i Excel?

Ved simple problemer finder Solver i Excel som regel hurtigt de optimale Solver-variableværdier for objektivfunktionen. Men i nogle tilfælde har Solver problemer med at finde de Solver-variableværdier, der optimerer objektivfunktionen. I disse tilfælde viser Solver typisk en meddelelse eller en fejlmeddelelse, der beskriver eller diskuterer det problem, der […]