Boolsk variabel type
VBA -boolsk datatype brukes til å lagre sanne eller usanne verdier. True kan også representeres med 1 og Falsk med 0.
For å deklarere en boolsk variabel, bruker du Dim Statement (forkortelse for Dimension):
1 | Dim blnA som boolsk |
For å tilordne en verdi til en variabel, bruker du bare likhetstegnet:
1 | blnA = sant |
Når du setter dette inn i en prosedyre, kan det se slik ut:
123456789101112 | Sub blnExample ()'erklærer den boolske variabelenDim blnA som boolsk'kjør kode for å fylle ut variabelen - vanligvis er koden en if eller en case statementHvis område ("A1")> 0 dablnA = santEllersblnA = FalskeSlutt om'vis meldingsboksenMsgBox "Testen for å se om cellen har en verdi større enn 0 er" & blnASlutt Sub |
Hvis du kjører koden ovenfor, vises følgende meldingsboks.
Deklarere boolsk variabel på modul eller globalt nivå
I forrige eksempel har vi erklært Boolsk variabel i en prosedyre. Variabler deklarert med en prosedyre kan bare brukes innenfor denne prosedyren.
I stedet kan du deklarere boolske variabler på modul- eller globalt nivå.
Modulenivå
Du erklærer Modulenivå variabler øverst i kodemodulene med Dim uttalelse.
Disse variablene kan brukes med alle prosedyrer i den kodemodulen.
Globalt nivå
Du erklærer også Globalt nivå variabler øverst i kodemodulene. Imidlertid, i stedet for å bruke Dim uttalelse, vil du bruke Offentlig uttalelse for å indikere at Boolsk variabel er tilgjengelig for bruk i hele ditt VBA -prosjekt.
1 | Offentlig blnA som boolsk |
Hvis du skulle erklære Boolsk variabel på modulnivå og deretter prøve å bruke den i en annen modul, vil du få en feilmelding.
Imidlertid, hvis du hadde brukt det offentlige søkeordet for å erklære Boolsk variabel, ville feilen ikke oppstå og prosedyren ville kjøre perfekt.
Bruke en boolsk variabel
Du bruker den boolske variabelen i logisk sammenligning. Disse brukes ofte med If -setninger for å teste om en betingelse er sann eller usann i henhold til eksemplet ovenfor, eller i en kodelinje for å bruke en logisk test - kanskje for å se om en verdi er større enn en annen.
12345678 | Sub blnExample ()'erklærer den boolske variabelenDim blnA Som boolsk'test for å se om ett tall er større enn det neste talletblnA = 45> 68'vis meldingsboksenMsgBox blnASlutt Sub |
Hvis du kjører koden ovenfor, får du følgende meldingsboks.
fordi selvfølgelig 45 ikke er større enn 68!
Bruke boolske operatører
Ettersom boolske variabler brukes i logisk sammenligning, kan vi bruke de logiske operatorene AND og OR til å teste om mer enn én betingelse er sann eller usann.
Bruke AND -operatøren
Vi kan bruke AND -funksjonen for å se om begge betingelsene er oppfylt.
12345678 | Sub blnExample ()'erklærer den boolske variabelenDim blnA Som boolsk'bruk AND -operatøren for å teste om begge betingelsene er sanneblnA = 10> 13 Og 15> 12'vis meldingsboksenMsgBox blnASlutt Sub |
eller vi kan kjøre den samme testen ved hjelp av en If -erklæring:
123456789101112 | Sub blnExample ()'erklærer den boolske variabelenDim blnA Som boolsk'bruk AND -operatøren for å teste om begge betingelsene er sanneHvis 10> 13 og 15> 12 DablnA = santEllersblnA = FalskSlutt om'vis meldingsboksenMsgBox blnASlutt Sub |
Begge eksemplene ovenfor vil komme tilbake FALSK på grunn av det faktum at 10 er IKKE større enn 13 - og BÅDE betingelsene må være sanne for at den boolske skal være sann.
Bruker OR -operatøren
Vi kan bruke ELLER -funksjonen for å se om EN AV betingelsene er oppfylt.
12345678 | Sub blnExample ()'erklærer den boolske variabelenDim blnA Som boolsk'bruk AND -operatøren for å teste om begge betingelsene er sanneblnA = 10> 13 Eller 15> 12'vis meldingsboksenMsgBox blnASlutt Sub |
eller vi kan kjøre den samme testen ved hjelp av en If -erklæring:
123456789101112 | Sub blnExample ()'erklærer den boolske variabelenDim blnA Som boolsk'bruk AND -operatøren for å teste om begge betingelsene er sanneHvis 10> 13 ELLER 15> 12 DablnA = santEllersblnA = FalskSlutt om'vis meldingsboksenMsgBox blnASlutt Sub |
Disse eksemplene vil komme tilbake EKTE på grunn av at 10 IKKE er større enn 13 MEN 15 ER større enn 12 - ogBARE EN tilstanden må være sann for at den boolske skal være sann.
Ved å bruke If -setninger kan vi bruke mer logiske operatorer
Bruker NOT -operatøren
Vi kan også bruke NOT -operatoren med den boolske variabelen. NOT -operatøren negerer verdien av tilstanden - så hvis en betingelse er sann, vil NOT -operatøren returnere usann.
12345678910111213141516 | Sub FindDifferences ()'erklære rekkeviddevariablerDim rng1 As RangeDim rng2 As Range'aktiver ark 1Regneark ("Ark1"). Aktiver'fyll ut områdeneSett rng1 = Range ("A3")Sett rng2 = Range ("B3")'bruk NOT -operatoren for å se om verdiene er like eller ikke.Hvis ikke rng1.Value = rng2.Value DaMsgBox "Verdiene i cellene er ikke like"EllersMsgBox "Verdiene i cellene er like"Slutt omSlutt Sub |
Bruke Xor Logical Operator
DeXor logisk operator brukes til å sammenligne to eller flere forhold. Hvis en av betingelsene er sanne, vil den returnere SANN. Hvis det er 2 betingelser, og INGEN er sanne eller begge er sanne, vil den returnere FALSK.
1234567891011121314151617 | Sub blnExample ()'erklærer heltalleneDim intA som heltallDim intB Som heltall'erklærer den boolske variabelenDim blnResult As Boolean'fyll ut variableneintA = 5intB = 10'sjekk om det er santHvis intA = 5 Xor intB = 5 DablnResult = SantEllersblnResult = FalskSlutt omMsgBox blnResultSlutt Sub |
I eksemplet ovenfor, da EN av betingelsene er SANN, kommer meldingsboksen tilbake EKTE.
1234567891011121314151617 | Sub blnExample ()'erklærer heltalleneDim intA som heltallDim intB Som heltall'erklærer den boolske variabelenDim blnResult As Boolean'fyll ut variableneintA = 5intB = 5'sjekk om det er santHvis intA = 5 Xor intB = 5 DablnResult = SantEllersblnResult = FalskSlutt omMsgBox blnResultSlutt Sub |
Imidlertid, i eksemplet ovenfor, ettersom BÅDE betingelsene er sanne, kommer meldingsboksen tilbake FALSK.
1234567891011121314151617 | Sub blnExample ()'erklærer heltalleneDim intA som heltallDim intB Som heltall'erklærer den boolske variabelenDim blnResult As Boolean'fyll ut variableneintA = 6intB = 8'sjekk om det er santHvis intA = 5 Xor intB = 5 DablnResult = SantEllersblnResult = FalskSlutt omMsgBox blnResultSlutt Sub |
og til slutt, ettersom begge betingelsene er FALSE, vil meldingsboksen også returnere FALSK.