Hur man använder If-Then i Excel 2016 VBA

If-Then är VBA:s viktigaste kontrollstruktur. Du kommer förmodligen att använda det här kommandot dagligen. Använd If-Then-strukturen när du vill köra en eller flera satser villkorligt. Den valfria Else-satsen, om den ingår, låter dig köra en eller flera satser om villkoret du testar inte är sant. Här är en enkel CheckUser-procedur, omkodad för att använda If-Then-Else-strukturen:

Sub CheckUser2()
  Användarnamn = InputBox("Ange ditt namn: ")
  Om Användarnamn = "Satya Nadella" Då
    MsgBox ("Välkommen Satya...")
' …[Mer kod här] …
  Annan
    MsgBox "Förlåt. Bara Satya Nadella kan köra det här.”
  Avsluta om
Avsluta Sub

Om-Då exempel

Följande rutin visar If-Then-strukturen utan den valfria Else-satsen:

Sub GreetMe()
  Om tid < 0,5 då MsgBox "God morgon"
Avsluta Sub

GreetMe-proceduren använder VBA:s tidsfunktion för att få systemtiden. Om den aktuella tiden är mindre än 0,5 visar rutinen en vänlig hälsning. Om tiden är större än eller lika med 0,5 slutar rutinen och ingenting händer.

För att visa en annan hälsning om tiden är större än eller lika med 0,5, kan du lägga till en annan If-Then-sats efter den första:

Sub GreetMe2()
  Om tid < 0,5 då MsgBox "God morgon"
  Om tid >= 0,5 då MsgBox "God eftermiddag"
Avsluta Sub

Lägg märke till att >= (större än eller lika med) används för den andra If-Then-satsen. Detta säkerställer att hela dagen täcks. Hade > (större än) använts, skulle inget meddelande visas om denna procedur utfördes exakt kl. 12.00. Det är ganska osannolikt, men med ett viktigt program som detta vill du inte ta några chanser.

Ett If-Then-Else-exempel

Ett annat förhållningssätt till det föregående problemet använder Else-satsen. Här är samma rutin omkodad för att använda If-Then-Else-strukturen:

Sub GreetMe3()
  Om tid < 0,5 Då MsgBox "God morgon" Else _
    MsgBox "God eftermiddag"
Avsluta Sub

Observera att linjefortsättningstecknet (understreck) används i föregående exempel. If-Then-Else-satsen är faktiskt ett enda påstående. VBA tillhandahåller ett något annorlunda sätt att koda If-Then-Else-konstruktioner som använder en End If-sats. Därför kan GreetMe-proceduren skrivas om som

Sub GreetMe4()
  Om tid < 0,5 då
    MsgBox "God morgon"
  Annan
    MsgBox "God eftermiddag"
  Avsluta om
Avsluta Sub

Faktum är att du kan infoga valfritt antal påståenden under If-delen och valfritt antal påståenden under Else-delen. Denna syntax är lättare att läsa och gör påståendena kortare.

Vad händer om du behöver utöka GreetMe-rutinen för att hantera tre tillstånd: morgon, eftermiddag och kväll? Du har två alternativ: Använd tre If-Then-satser eller använd en kapslad If-Then-Else-struktur. Nesting innebär att placera en If-Then-Else-struktur inom en annan If-Then-Else-struktur. Det första tillvägagångssättet, med tre If-Then-satser, är enklare:

Sub GreetMe5()
 Dim Msg As String
 Om tid < 0,5 då Msg = "Morgon"
 Om tid >= 0,5 och tid < 0,75 då Msg = "Eftermiddag"
 Om Tid >= 0,75 då Msg = "Afton"
 MsgBox “Bra” & Msg
Avsluta Sub

En ny twist lades till med användning av en variabel. Msg-variabeln får ett annat textvärde, beroende på tid på dygnet. MsgBox-meddelandet visar hälsningen: God morgon, god eftermiddag eller god kväll.

Följande rutin utför samma åtgärd men använder en If-Then-End If-struktur:

Sub GreetMe6()
  Dim Msg As String
  Om tid < 0,5 då
    Msg = "morgon"
  Avsluta om
  Om tid >= 0,5 och tid < 0,75 då
    Msg = "Eftermiddag"
  Avsluta om
  Om Tid >= 0,75 Då
    Msg = "kväll"
  Avsluta om
  MsgBox “Bra” & Msg
Avsluta Sub

Använder ElseIf

I de föregående exemplen exekveras varje sats i rutinen. En något mer effektiv struktur skulle lämna rutinen så snart ett tillstånd befinns vara sant. På morgonen, till exempel, bör proceduren visa Good Morning-meddelandet och sedan avsluta — utan att utvärdera de andra överflödiga förhållandena.

Med en liten rutin som denna behöver du inte oroa dig för körhastigheten. Men för större applikationer där hastigheten är avgörande bör du känna till en annan syntax för If-Then-strukturen.

Så här kan du skriva om GreetMe-rutinen genom att använda den här syntaxen:

Sub GreetMe7()
 Dim Msg As String
 Om tid < 0,5 då
   Msg = "morgon"
 ElseOm Tid >= 0,5 Och Tid < 0,75 Då
   Msg = "Eftermiddag"
 Annan
   Msg = "kväll"
 Avsluta om
 MsgBox “Bra” & Msg
Avsluta Sub

När ett villkor är sant, kör VBA de villkorliga satserna och If-strukturen slutar. Med andra ord är denna procedur lite mer effektiv än de tidigare exemplen. Avvägningen är att koden är svårare att förstå.

Ett annat If-Then-exempel

Här är ett annat exempel som använder den enkla formen av If-Then-strukturen. Denna procedur uppmanar användaren att ange en kvantitet och visar sedan lämplig rabatt, baserat på den kvantitet som användaren anger:

Sub ShowDiscount()
  Dimmängd så lång
  Dimrabatt som dubbel
  Kvantitet = InputBox(”Ange kvantitet:”)
  Om Kvantitet > 0 Då är rabatt = 0,1
  Om kvantitet >= 25 Då rabatt = 0,15
  Om Kvantitet >= 50 Då rabatt = 0,2
  Om Kvantitet >= 75 Då rabatt = 0,25
  MsgBox "Rabatt: " & rabatt
Avsluta Sub

Lägg märke till att varje If-Then-sats i denna rutin exekveras, och värdet för Discount kan ändras när satserna exekveras. Men rutinen visar i slutändan det korrekta värdet för Rabatt eftersom If-Then-satserna är i ordning efter stigande rabattvärden.

Följande procedur utför samma uppgifter genom att använda den alternativa ElseIf-syntaxen. I det här fallet avslutas rutinen omedelbart efter exekvering av satserna för ett sant tillstånd:

Sub ShowRabatt2()
 Dimmängd så lång
 Dimrabatt som dubbel
 Kvantitet = InputBox("Ange kvantitet: ")
 Om Kvantitet > 0 Och Kvantitet < 25 Då
  Rabatt = 0,1
 ElseIf Kvantitet >= 25 Och Kvantitet < 50 Då
  Rabatt = 0,15
 ElseIf Kvantitet >= 50 Och Kvantitet < 75 Då
  Rabatt = 0,2
 ElseOm Kvantitet >= 75 Då
  Rabatt = 0,25
 Avsluta om
 MsgBox "Rabatt: " & rabatt
Avsluta Sub

Dessa multipla If-Then-strukturer är ganska besvärliga. Du kanske vill använda If-Then-strukturen endast för enkla binära beslut.

Leave a Comment

Hur man använder kommandona Gör om och upprepa i Word 2016

Hur man använder kommandona Gör om och upprepa i Word 2016

Lär dig att använda kommandona Gör om och Upprepa i Word 2016 för att effektivt hantera dina dokument. Dessa funktioner hjälper dig att enkelt ångra och återställa ändringar.

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows Microsoft Word öppnar filer i skrivskyddat läge, vilket gör det omöjligt att redigera dem? Oroa dig inte, metoderna finns nedan

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Så här åtgärdar du fel vid utskrift av felaktiga Microsoft Word-dokument Fel vid utskrift av Word-dokument med ändrade teckensnitt, röriga stycken, saknad text eller förlorat innehåll är ganska vanligt. Men gör det inte

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Om du har använt pennan eller överstrykningspennan för att rita på dina PowerPoint-bilder under en presentation, kan du spara ritningarna till nästa presentation eller radera dem så att nästa gång du visar den börjar du med rena PowerPoint-bilder. Följ dessa instruktioner för att radera ritningar med penna och överstrykningspenna: Radera linjer ett på […]

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteket innehåller CSS-filer, XSL-filer (Extensible Stylesheet Language) och bilder som används av fördefinierade mallsidor, sidlayouter och kontroller i SharePoint 2010. För att hitta CSS-filer i stilbiblioteket på en publiceringswebbplats: Välj Webbplatsåtgärder→Visa Allt webbplatsinnehåll. Innehållet på webbplatsen visas. Style-biblioteket ligger i […]

Formatera siffror i tusentals och miljoner i Excel-rapporter

Formatera siffror i tusentals och miljoner i Excel-rapporter

Överväldiga inte din publik med gigantiska siffror. I Microsoft Excel kan du förbättra läsbarheten för dina instrumentpaneler och rapporter genom att formatera dina siffror så att de visas i tusentals eller miljoner.

Hur man delar och följer SharePoint-webbplatser

Hur man delar och följer SharePoint-webbplatser

Lär dig hur du använder SharePoints sociala nätverksverktyg som låter individer och grupper kommunicera, samarbeta, dela och ansluta.

Hur man konverterar datum till Julian-format i Excel

Hur man konverterar datum till Julian-format i Excel

Julianska datum används ofta i tillverkningsmiljöer som en tidsstämpel och snabbreferens för ett batchnummer. Denna typ av datumkodning tillåter återförsäljare, konsumenter och serviceagenter att identifiera när en produkt tillverkades och därmed produktens ålder. Julianska datum används också i programmering, militären och astronomi. Annorlunda […]

Hur man skapar en Access Web App

Hur man skapar en Access Web App

Du kan skapa en webbapp i Access 2016. Så vad är en webbapp egentligen? Tja, webben betyder att den är online, och appen är bara en förkortning för "applikation". En anpassad webbapp är en onlinedatabasapplikation som nås från molnet med en webbläsare. Du bygger och underhåller webbappen i skrivbordsversionen […]

Snabbstartsfält i SharePoint 2010

Snabbstartsfält i SharePoint 2010

De flesta sidor i SharePoint 2010 visar en lista med navigeringslänkar i snabbstartsfältet till vänster på sidan. Snabbstartsfältet visar länkar till utvalt webbplatsinnehåll som listor, bibliotek, webbplatser och publiceringssidor. Snabbstartsfältet innehåller två mycket viktiga länkar: Länken Allt webbplatsinnehåll: […]