Velg case struktur er et nyttig VBA struktur for beslutninger som involverer tre eller flere alternativer i Excel 2016 (selv om det fungerer også med to alternativer, og gir et alternativ til If-Then -Else struktur)
A Velg sak eksempel
følgende eksempel viser hvordan du bruker Select sak struktur.
Sub ShowDiscount3 () Dim Antall As Long Dim rabatt som Double Antall = InputBox ( "Skriv Antall:") Velg sak Antall case 0 til 24 Rabatt = 0,1 sak 25 til 49 Rabatt = 0.15 sak 50 Til 74 Rabatt = 0,2 Saken & gt; = 75 Rabatt = 0.25 End Select MsgBox "Rabatt:" & DiscountEnd Sub
I dette eksempel er mengden variabelen evalueres. De rutinekontroller for fire ulike tilfeller (0-24, 25-49, 50-74, og 75 eller høyere).
Et ubegrenset antall uttalelser kan følge hver sak uttalelse, og de alle er henrettet dersom saken er sant. Hvis du bruker bare én setning, som i dette eksempelet, kan du sette den uttalelsen på samme linje som tilfellet søkeord, innledes med et kolon - VBA uttalelse skilletegn. Dette gjør koden kompakt og litt klarere. Slik rutinen ser ut i dette formatet:
Sub ShowDiscount4 () Dim Antall As Long Dim rabatt som Double Antall = InputBox ( "Skriv Antall:") Velg Sak Antall case 0 til 24: Rabatt = 0.1 Sak 25 til 49: rabatt = 0.15 sak 50 Til 74: rabatt = 0,2 tilfellet er > = 75: rabatt = 0.25 End Select MsgBox "rabatt:" & DiscountEnd Sub
Når VBA utfører en Select sak struktur, er strukturen gått ut så snart VBA finner en sann sak og utfører uttalelser for dette tilfellet.
En nestet Velg sak eksempel
som vist i følgende eksempel, kan du reir Select case-strukturer. Denne rutinen undersøker den aktive cellen og viser en melding som beskriver innholdet i cellen. Legg merke til at prosedyren har tre Select Case-strukturer, og hver har sin egen End Select utsagn:
Sub CheckCell () Dim Msg As String Velg sak IsEmpty (ActiveCell) Sak Sann Msg = "er blank." Case Else Velg sak ActiveCell .HasFormula sak Sann Msg = "har en formel" case Else Velg sak IsNumeric (ActiveCell) sak Sann Msg = "har en rekke" case Else Msg = "har teksten" End Select End Select End Select MsgBox "Cell" & ActiveCell.Address & "" &Amp; MsgEnd Sub
Logikken går noe sånt som dette:
Finn ut om cellen er tom
Hvis det ikke er tom, kan du se om det inneholder en formel
..
Hvis det er ingen formel, finne ut om det inneholder en numerisk verdi eller tekst.
Når de rutinemessige ender, inneholder MSG variabel en streng som beskriver innholdet i cellen . Den MsgBox funksjonen viser den meldingen., En melding vises av CheckCell prosedyren.
Du kan neste Velg Case-strukturer så dypt som du må, men sørge for at hver Velg sak utsagn har en tilsvarende End Select uttalelse.
Hvis du fortsatt ikke overbevist om at innrykk kode er verdt innsatsen, serverer den forrige oppføring som et godt eksempel. Fordypningene virkelig å gjøre de hekkende nivåer klart. Ta en titt på den samme prosedyren uten innrykk:
Sub CheckCell () Dim Msg Som StringSelect sak IsEmpty (ActiveCell) Sak TrueMsg = Sak ElseSelect sak ActiveCell.HasFormulaCase TrueMsg = "har en formel" Case ElseSelect "er tomt." sak IsNumeric (ActiveCell) sak TrueMsg = "har en rekke" case ElseMsg = "har teksten" End SelectEnd SelectEnd SelectMsgBox "Cell" & ActiveCell.Address & "" &Amp; MsgEnd Sub
Ganske uforståelig, eh?