VBA låter dig använda de logiska operatorerna Och, Eller, Inte, Xor att jämföra värden. Operatörerna anses vara ”booleska”, vilket innebär att de returnerar True eller False som ett resultat.
Om du vill lära dig att jämföra strängar, klicka här: VBA Jämför strängar - StrComp
Om du vill lära dig hur du använder jämförelseoperatorer, klicka här: VBA -jämförelseoperatörer - inte lika med & mer
Med hjälp av And Logical Operator
De Och logisk operatör jämför två eller flera villkor. Om alla villkor är sanna kommer operatören att returnera True. Om minst ett av villkoren inte är sanna kommer operatören att returnera Falskt. Här är ett exempel:
123456789101112 | Dim intA som heltalDim intB som heltalDim blnResult As BooleanintA = 5intB = 5Om intA = 5 Och intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
I det här exemplet vill vi kontrollera om båda intA och intB är lika med 5. Om detta är sant, är värdet av booleskt blnResult kommer att vara sant, annars blir det falskt.
Först sätter vi värden på intA och intB till 5:
12 | intA = 5intB = 5 |
Efter det använder vi Och operatören i if -satsen för att kontrollera om värdena är lika med 5:
12345 | Om intA = 5 Och intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
Eftersom båda variablerna är lika med 5, är blnResult returnerar True:
Bild 1. Använda Och logiska operatorn i VBA
Använda Or Logical Operator
De Eller logisk operatör jämför två eller flera villkor. Om minst ett av villkoren är sant, kommer det att returnera Sant. Om inget av villkoren är sanna kommer operatören att returnera Falsk. Här är koden för exemplet:
123456789101112 | Dim intA som heltalDim intB som heltalDim blnResult As BooleanintA = 5intB = 10Om intA = 5 Eller intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
I det här exemplet vill vi kontrollera om båda intA är lika med 5. eller intB är lika med 10. Om något av dessa villkor är sant, är värdet av booleskt blnResult kommer att vara sant, annars blir det falskt.
Först sätter vi värdet på intA till 5 och intB till 10:
12 | intA = 5intB = 10 |
Efter det använder vi Eller operatör i if -satsen för att kontrollera om något av värdena är lika med 5:
12345 | Om intA = 5 Eller intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
Som intA värdet är 5, blnResult returnerar True:
Bild 2. Använda den logiska operatorn Or i VBA
Använda Not Logical Operator
De Inte logisk operatör kontrollerar ett eller flera villkor. Om villkoren är sanna returnerar operatören False. Annars returnerar den True. Här är koden för exemplet:
12345678910 | Dim intA som heltalDim blnResult As BooleanintA = 5Om inte (intA = 6) DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
I det här exemplet vill vi kontrollera om värdet av intA är inte lika med 6. If intA är annorlunda än 6, värdet av booleskt blnResult kommer att vara sant, annars blir det falskt.
Först sätter vi värdet på intA till 5:
1 | intA = 5 |
Efter det använder vi operatorn Not i If -satsen för att kontrollera om värdet på intA är annorlunda än 6:
12345 | Om inte (intA = 6) DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
Som intA värdet är 5, blnResult returnerar True:
Bild 3. Använda operatorn Not logical i VBA
Använda Xor Logical Operator
De Xor logisk operatör jämför två eller flera villkor. Om exakt ett av villkoren är sant, kommer det att returnera Sant. Om inget av villkoren är sant, eller om mer än ett är sant, kommer det att returnera Falskt. Här är koden för exemplet:
123456789101112 | Dim intA som heltalDim intB som heltalDim blnResult As BooleanintA = 5intB = 10Om intA = 5 Xor intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
I det här exemplet vill vi kontrollera om exakt ett av värdena (intA eller IntB) är lika med 5. Om bara ett villkor är sant, är värdet av booleskt blnResult kommer att vara sant, annars blir det falskt.
Först sätter vi värdet på intA till 5 och intB till 10:
12 | intA = 5intB = 10 |
Efter det använder vi Eller operatör i if -satsen för att kontrollera om något av värdena är lika med 5:
12345 | Om intA = 5 Xor intB = 5 DåblnResult = SantAnnanblnResult = FalsktAvsluta om |
Som intA värdet är 5 och intB är 10, den blnResult returnerar True:
Bild 4. Använda den logiska operatorn Xor i VBA
Är operatör
Is Operator testar om två objektvariabler lagrar samma objekt.
Låt oss titta på ett exempel. Här kommer vi att tilldela två kalkylblad till kalkylbladobjekt rng1 och rng2, testa om de två kalkylbladsobjekten lagrar samma kalkylblad:
12345678910111213 | Sub CompareObjects ()Dim ws1 som kalkylblad, ws2 som arbetsbladAnge ws1 = Sheets ("Sheet1")Ange ws2 = Sheets ("Sheet2")Om ws1 är ws2 DåMsgBox "Samma WS"AnnanMsgBox "Olika WS"Avsluta omAvsluta Sub |
Naturligtvis är kalkylbladsobjekten inte desamma, så "Olika WS" returneras.
Som operatör
Liknande operatör kan jämföra två strängar för inexakta matchningar. Detta exempel kommer att testa om en sträng börjar med "Mr."
1234567891011121314 | Sub LikeDemo ()Dim strName Som strängDim blnResult As BooleanstrName = "Mr. Michael James"Om strName Gilla "Mr*" DåblnResult = SantAnnanblnResult = FalsktAvsluta omAvsluta Sub |